ProxmoxでCloud-Init対応テンプレートを作成するぞい
本記事では、最小限の手順でCloud-Initテンプレートを作る方法を紹介します。
1. 仮想マシンの作成
まずはベースとなるVMを作成します。
qm create 7000 --memory 2048 --cores 2 --name ubuntu-cloud --net0 virtio,bridge=vmbr0
-
7000
: VM ID -
2048
: メモリ(MB) -
2
: CPUコア数 -
ubuntu-cloud
: VM名 -
virtio
ネットワーク、vmbr0
ブリッジ使用
2. ディスクイメージをインポート
Ubuntuなどのクラウドイメージをインポートします。
qm importdisk 7000 ubuntu-server-cloudimg-amd64.img local-lvm
-
local-lvm
はストレージ名 -
ubuntu-server-cloudimg-amd64.img
は公式のクラウドイメージ - https://cloud-images.ubuntu.com/
3. Cloud-Init設定
Cloud-Init用にVMを設定します。
# SCSIディスクをVMに追加
qm set 7000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-7000-disk-0
# Cloud-Init ISOを追加
qm set 7000 --ide2 local-lvm:cloudinit
# ブートディスク設定
qm set 7000 --boot c --bootdisk scsi0
# シリアルコンソール設定
qm set 7000 --serial0 socket --vga serial0
これでCloud-Init対応VMが準備できました。
4. VMの初期設定とクリーンアップ
テンプレート用に不要なキャッシュやファイルを削除しておくと軽量化できます。
apt clean
5. テンプレート化
VMを停止してテンプレートに変換します。
qm shutdown 7000
qm template 7000
これでCloud-Init対応テンプレートの完成です。
6. 新規VMの作成
テンプレートから新規VMを作成する際、Cloud-Initでユーザー名やパスワード、SSHキーを簡単に設定できます。GUIまたはCLIから作成可能です。
ポイントまとめ
- 不要な
cd
やls
コマンドは省略可能。 - Cloud-Init対応には
--ide2 local-lvm:cloudinit
と--serial0 socket --vga serial0
が必須。 - テンプレート化前にVMをクリーンアップすると効率的。
これで複数のVMを自動設定付きで簡単に展開可能です。
以下がCloud-Init対応テンプレート作成の最短コマンドまとめです。
VM作成
cd /var/lib/vz/template/iso/
qm create 7000 --memory 2048 --cores 2 --name ubuntu-cloud --net0 virtio,bridge=vmbr0
qm importdisk 7000 ubuntu-server-cloudimg-amd64.img local-lvm
qm set 7000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-7000-disk-0
qm set 7000 --ide2 local-lvm:cloudinit
qm set 7000 --boot c --bootdisk scsi0
qm set 7000 --serial0 socket --vga serial0
#このあとはGUIでもOK
apt clean
qm shutdown 7000
qm template 7000
これで複数のVMを効率よく展開可能です。