概要
ProxmoxをiPXE経由で起動して自動セットアップをしてみる
流れ
- iPXEBoot可能なPCを起動する
- DHCPによりインストーラの場所を取得
- HTTPサーバーよりインストーラの取得
- 同じくHTTPサーバーより初期セットアップ用の回答ファイルの取得
- 自動起動!
環境
機器 |
---|
NEC IX2215 |
動いてるPROXMOXサーバー 8.1.4 |
手順
iPXEBoot可能なPCを準備する
検証につき自前proxmoxサーバーにてVMを準備
マシン: i440fx
BIOS: SeaBIOS
OSタイプ: Linux 6.x
CPU: HOST
メモリ: 6,144
メモリが6GB以下だとインストールができないことがあった
一度起動し、BIOS設定にて起動順序をiPXE ipv4
のみにしておく
インストーラの準備
https://pve.proxmox.com/wiki/Automated_Installation
ここを参考に自動インストール用のisoを作成する
-
toolのインストール
apt install proxmox-auto-install-assistant
-
インストール対象のProxmoxインストーラーをダウンロード
wget https://enterprise.proxmox.com/iso/proxmox-ve_8.2-1.iso
-
toolを使用して自動セットアップ設定が書き込まれたisoの作成
proxmox-auto-install-assistant prepare-iso {ダウンロードしたiso} --fetch-from http --url "{WEBサーバーIP}/answer"
-
初期RAMディスクとカーネルの抜出
https://github.com/morph027/pve-iso-2-pxe
bash pve-iso-2-pxe.sh {3で作成したiso}
直下にpxeboot/linux26
pxeboot/initrd
ができたことを確認
※後で使います
回答ファイルの準備
最低限の記述だけをしておく
[global]
keyboard = "en-us"
country = "jp"
fqdn = "{サーバー名}.local"
mailto = "pvexxx@no.invalid"
timezone = "Asia/Tokyo"
root_password = "{rootパスワード}"
[network]
source = "from-dhcp"
[disk-setup]
filesystem = "ext4"
lvm . swapsize = 0
lvm . maxvz = 0
disk_list = [ "sda" ]
fqdnがサーバー名になるので注意!!
複数ディスクがある場合は["sda","sdb","sdc"]のように記述
起動ファイルの作成
#!ipxe
dhcp
set serverip http://{HTTPサーバーIP}
set opts "vga=791 video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw quiet initrd=initrd"
kernel ${serverip}/linux26 ${opts} proxmox-start-auto-installer
initrd ${serverip}/initrd
boot
HTTPサーバーの準備
テスト用のサーバーを作ってあるので必要であれば↓
https://github.com/maimai-club/installmox
手順4で作成したファイルと起動用ファイルを広報する
http://{サーバーIP}/lpxelinux.0
http://{サーバーIP}/initrd
http://{サーバーIP}/linux26
http://{サーバーIP}/answer.toml
DHCPオプションの設定
DHCPオプション67に起動ファイルURLを設定
NEX IXルーターの場合:
Option 60 ascii PXEClient
※PXEの場合は指定しなくてもよかった
Option 67 ascii http://{サーバーIP}/lpxelinux.0