Proxmox VEのWeb UIから設定できるCloud-Init項目は以下の通りで、最低限必要な設定はできるけど、追加パッケージの指定とかがデフォルトでは現状できない。
- ユーザ
- パスワード
- DNSドメイン
- DNSサーバ
- SSH公開鍵
- プロビジョニング時のパッケージアップグレード(apt upgradeやdnf update)の実行有無
- IPアドレス設定 (固定 / DHCP)
ただしCloud-Initの機能そのものにはもっと様々な初期設定を指定でき、例えばRHELのサブスクリプションはrh_subscription
で設定可能。
今回はこれをProxmox VEから処理するための設定を使って、Proxmox VEでサブスクリプション済みのRHELのVMをテンプレートとCloud-Initを使ってプロビジョニングする仕組みを確認。
RHELのクラウドイメージ
カスタマポータルのDownloadから、Red Hat Enterprise Linuxへ進む。
リストから普通のイメージでなく、「Virtualization Images」の「Red Hat Enterprise Linux . KVM Guest Image」をダウンロード。
今回は諸事情により8.9を使用。
カスタムCloud-Initの設定
テンプレート作成部分は先日書いた以下のエントリ参照。
テンプレートの作成
テンプレート9010
の「rhel8.9-template」を作成。
qm create 9010 --name rhel8.9-template --memory 2048 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci qm set 9010 --scsi0 S870QVO2TB:0,import-from=/mnt/pve/pecorino-dev/template/iso/rhel-8.9-x86_64-kvm.qcow2 qm set 9010 --ide2 S870QVO2TB:cloudinit qm set 9010 --boot order=scsi0 qm set 9010 --serial0 socket --vga serial0 qm template 9010
ここでUIで可能なCloud-Initの設定もセットする。
カスタム設定配置用snippetsの設定
カスタム設定ファイルを置くために、ストレージの設定でスニペットを有効にする。今回はNFSのストレージに設定。
(このストレージはテンプレートのストレージと異なっていても問題ない)
有効にするとディレクトリが作成される。
root@pve:~# ls -al /mnt/pve/pecorino-dev/snippets/ total 8 drwxr-xr-x 2 root root 4096 Apr 14 14:27 . drwxrwxrwx 13 root root 4096 Apr 14 14:27 ..
vendor設定ファイルの作成
認証情報がplaintextのままなのはちょっと気になるところだけど個人環境なのでとりあえず。
サブスクリプション割り当てのためのrh_subscription
と、追加パッケージのpackages
でpodman
を初期状態でインストールされるようにしてみる。
root@pve:~# ls -l /mnt/pve/pecorino-dev/snippets/ total 4 -rw-r--r-- 1 root root 99 Apr 14 17:10 rhel_subscription_vendor_template.yaml root@pve:~# cat /mnt/pve/pecorino-dev/snippets/rhel_subscription_vendor_template.yaml #cloud-config rh_subscription: username: ユーザー名を記載 password: パスワードを記載 auto-attach: True packages: - podman
vendorデータのセット
作成したvendorデータ定義が書かれたYAMLファイルを、テンプレートのCloud-Initへセットする。
ファイルシステム上のパスでなく、ストレージ名とその中でのパスを指定する。
root@pve:~# qm set 9010 --cicustom "vendor=pecorino-dev:snippets/rhel_subscription_vendor_template.yaml" update VM 9010: -cicustom vendor=pecorino-dev:snippets/rhel_subscription_vendor_template.yaml
これですべての準備が完了。
※ ただし、Web UIのCloud-Initの画面では、vendor設定に関して現バージョンでは確認はできない。
VMのクローン
とりあえずUIのクローンでVM IDとホスト名を入力してVMを作成し、電源投入
この通りSubscription Managementのログが表示され、(Cloud-Initで更新を有効にしてるので)パッケージアップデートも動作しはじめる。
Red Hatのカスタマポータルでも、システムが登録されていることを確認できる。
パッケージアップデートを有効にしていると処理時間の関係で時間は多少かかるが、podman
も自動的にインストールされる。
[zaki@rhel8-dev ~]$ podman --version podman version 4.6.1
環境
- PVE 8.1.10
- RHEL 8.9 (Virtualization Images)
Proxmox VEのCloud-Initは、vendorデータのカスタム設定でWeb UIから設定・確認できない項目も初期設定として使えることが確認できた。
ちなみにuserもファイルから設定できるが、これをやるとWebのUIから設定ができなくなる(qm set <vmid> --cicustom
でセットした内容で上書きされる)ので、画面から設定できない項目は基本的にvendorデータを使用するのが良さそう。
参考URL
この2つの記事は大変参考になりました。
コマンドはCustom Cloud-Init COnfigurationに記載がある。が、確かにわかりづらい…