Proxmox Automated Installation の Answer included in the ISO With Ventoy


:::note info
作成日：2024/4/28
PVE 8.2.2
PBS 3.2.2
:::


## TL;DL

- Proxmox Automated Installation を利用するための Answer included in the ISO をやってみた。
  - PVE・PBSどちらもやりました。
- 複数のISOを一つのUSBメモリから利用できるように Ventoy も使います。

## 概要
PVE 8.2、PBS 3.2 からの新機能、Proxmox Automated Installation を 実際に使用してインストールをやってみます。
方式は以下3つあります。

- Answer included in the ISO
- Answer on Separate Partition
- Answer Fetched via HTTP

今回はAnswer included in the ISO（設定ファイルを組み込んがISOを作成する方式）を実施します。


## 手順
### サマリ
1. Answer作成用のPVE・PBSを手動インストール
2. `proxmox-auto-install-assistant` コマンドのインストール
3. `proxmox-auto-install-assistant device-info`でHW構成を確認
4. `proxmox-auto-install-assistant device-match`でフィルターの確認
5. Answerの作成
6. `proxmox-auto-install-assistant validate-answer`でAnswerの構文確認
7. `proxmox-auto-install-assistant prepare-iso`でISOの作成
8. Ventoyを使って複数ISOをUSBに格納
9. インストール




### Answer作成用のPVE・PBSを手動インストール
Answer作成時にHW構成情報を参照しながら作ることを想定しました。
※手動インストールしたノードと同じHW構成のノードに対して自動インストールをする。

このノードを作業用とします。





### `proxmox-auto-install-assistant` コマンドのインストール

https://qiita.com/oishi-d/items/8833dc28c78ded134083

上記記事でも触れていますが、 `apt install proxmox-auto-install-assistant` でコマンドのインストールを行います。






###  `proxmox-auto-install-assistant device-info`でHW構成を確認

ネットワークは対象NIC（enp1s0とか）を確認。
ディスクはsda,sdb…記載してしまえば確認不要？

### `proxmox-auto-install-assistant device-match`でフィルターの確認

`filter.ID_NET_NAME = "ens18"`の場合は、以下のように記載します。

```
root@pveauto:~# proxmox-auto-install-assistant device-match network ID_NET_NAME=ens18
[
  "ens18"
]
```





### Answerの作成
PVEとPBSでも記述は同じです。
マニュアルに記載の例ではMACアドレスの後方一致でフィルターしてましたが、その場合は各ノードのMACアドレスを確認しないといけないので、修正しました。
また、FQDNとIPアドレスは各ノードごとに修正する想定です。

```
[global]
keyboard = "jp"
country = "jp"
fqdn = "pve01.testinstall"
mailto = "mail@no.invalid"
timezone = "Asia/Tokyo"
root_password = "123456"

[network]
source = "from-answer"
cidr = "192.168.0.100/24"
dns = "219.110.4.84"
gateway = "192.168.0.1"
filter.ID_NET_NAME = "enp1s0"


[disk-setup]
filesystem = "zfs"
zfs.raid = "raid0"
disk_list = ['sda']
```

### `proxmox-auto-install-assistant validate-answer`でAnswerの構文確認
ISOに組み込む際にも同様に検証してくれるので、不要だが、一応。
ちなみに、構文チェックのみなので、パラメータが不正ならインストール時にエラーが出ることはあります。
※keyboardをjaでエラーとかでました。



### `proxmox-auto-install-assistant prepare-iso`でISOの作成
作成後のISOはもとにしたISOに上書き保存ではないので、安心です。

```
root@pve:/tmp/iso# proxmox-auto-install-assistant prepare-iso proxmox-ve_8.2-1.iso --fetch-from iso --answer-file answer_ve.toml
Checking provided answer file...
The file was parsed successfully, no syntax errors found!
Copying source ISO to temporary location...
Preparing ISO...
Moving prepared ISO to target location...
Final ISO is available at "proxmox-ve_8.2-1-auto-from-iso.iso".
```

### Ventoyを使って複数ISOをUSBに格納

以下あたりを参考にVentoyをインストールした一つのUSBに、作成した複数のISOを格納できます。

https://qiita.com/boronspoon/items/e09884a5a74032cff2f8


USBブートすると、画面のように実行するISOを選択可能です。
※写真は過去とったものなので、古いISOです。


![240422231041589.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459468/ff8a37ed-46cd-b3ac-20b0-e116e8841e44.jpeg)





### インストール
`Install Proxmox （Automated）`が一番目に表示されるようになります。
また10秒放置しても自動的にインストールが始まります。
これで、USBデバイスをさして電源起動だけでインストールができます。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459468/97a65fc6-45f5-7e89-a167-e2e38f2ad714.png)


## その他
### `proxmox-auto-install-assistant`のオプション


| オプション           | 説明                                                                                     |
|------------------|----------------------------------------------------------------------------------------|
| **prepare-iso**  | ISOの作成。|
| **validate-answer** | Answerの検証。|
| **device-match**   | フィルターの検証。|
| **device-info**    | デバイス情報の表示。|
| **system-info**    | システム情報の表示。|
| **help**           | ヘルプの表示。|



### 実運用上の課題・疑問点

PVE3台＋PBS1台ぐらいならISOを作ってUSBでという方法で十分だが、ノードが増えてきたらAnswer Fetched via HTTPが有効かな？
と思っていたんですが、Answerを一つしか指定できないので、各ノードのFQDNは同じで、IPはDHCPまかせという状態になる気がしています。
となると、各ノードのHW・FQDN・IPを対応させたい場合は台数分のISOを作ってインストールするしかないのですかね？







## 参考

https://pve.proxmox.com/wiki/Automated_Installation

https://qiita.com/boronspoon/items/e09884a5a74032cff2f8