近所のオーケーでついにゲット。しるこサンド。
名古屋まで行かないと手に入らないのかなぁと思ったら。
閑話休題
Cloud-init系もこれで大方終了、
ProxmoxでCloud-initを使ってみた。結果としてちゃんと使えるが
- VMでしか使えない。
- GUIからは大した設定ができない。
- コマンドラインから使うと従来通りのuser-dataの設定ができるし、Qemu Guest Agentが最初から使える。(これがベスト!)
という事だった。VMで使うよりコンテナで使いたかったが、CLIインタフェースがProxmox独自なので仕方ないか。
GUIからも利用できるCloud-initの設定
あくまでも簡易的に使うというか、Cloud-initを利用して、ホスト名とかIP、ユーザの設定ができるよ。というレベル。本格的に利用するなら、この後のカスタムで設定したほうがいい。
イメージのダウンロード
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
イメージの導入と仮想マシン設定
vmTemplateid=9000
qm create ${vmTemplateid} --memory 2048 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci
qm set ${vmTemplateid} --scsi0 local-lvm:0,import-from=/root/noble-server-cloudimg-amd64.img
rm /root/noble-server-cloudimg-amd64.img
qm set ${vmTemplateid} --ide2 local-lvm:cloudinit
qm set ${vmTemplateid} --boot order=scsi0
qm set ${vmTemplateid} --serial0 socket --vga serial0
qm set ${vmTemplateid} --agent enabled=1
qm set ${vmTemplateid} --ipconfig0 ip=dhcp
qm set ${vmTemplateid} --machine q35
ここでテンプレートの仮想マシンの設定を行っておく
テンプレートの作成
qm template ${vmTemplateid}
テンプレートからデプロイ
vmid=123
qm clone ${vmTemplateid} ${vmid} --name ubuntu1
GUIでの設定
Cloud-initの設定をしたら、Regenerate Imageをクリックしてからパワーオン。
Cloud-initをカスタムで設定したい場合
実は、こっちの方が便利。qemu-guest-agentも自動でインストールできる。
注意:この設定をするとGUIからこのテンプレートVMのCloud-initの設定は効かなくなるので注意
Snippetsの指定をしてある前提
Storageの「local」にSnippetsの設定を追加するだけだが。
イメージのダウンロード
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
イメージの導入と仮想マシン設定
vmTemplateid=9001
qm create ${vmTemplateid} --memory 2048 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci
qm set ${vmTemplateid} --scsi0 local-lvm:0,import-from=/root/noble-server-cloudimg-amd64.img
rm /root/noble-server-cloudimg-amd64.img
qm set ${vmTemplateid} --ide2 local-lvm:cloudinit
qm set ${vmTemplateid} --boot order=scsi0
qm set ${vmTemplateid} --serial0 socket --vga serial0
qm set ${vmTemplateid} --agent enabled=1
qm set ${vmTemplateid} --ipconfig0 ip=dhcp
qm set ${vmTemplateid} --machine q35
Cloud-initのyamlを作成
デフォルトを参考にして追加した。またパッケージにqemu-guest-agentを追加した。パッケージを追加してもqemu-guest-agentが立ち上がらなかったので、runcmdで起動と有効化をするようにした。これですぐにGUIでIPアドレスが表示されるようになる。
CONTAINER=ubuntu-test1
USER_PASSWD=Password
cat << EOF >/var/lib/vz/snippets/${vmTemplateid}_cloudinit_userdata-custom.yaml
#cloud-config
hostname: ${CONTAINER}
manage_etc_hosts: true
fqdn: ${CONTAINER}
timezone: Etc/UTC
locale: en_US.utf8
package_update: true
package_upgrade: true
packages:
- openssh-server
- qemu-guest-agent
users:
- name: testuser
shell: /bin/bash
ssh-authorized-keys:
- $(cat ~/.ssh/id_rsa.pub)
sudo: ALL=(ALL) NOPASSWD:ALL
passwd: "${USER_PASSWD}"
lock_passwd: false
chpasswd:
expire: false
list:
- testuser:${USER_PASSWD}
ssh_pwauth: true
write_files:
- content: |
alias diff='diff --color=auto'
alias ip='ip -color=auto'
path: /etc/profile.d/Z99-addedcolour.sh
runcmd:
- systemctl restart qemu-guest-agent
- systemctl enable qemu-guest-agent
EOF
qm set ${vmTemplateid} --cicustom "user=local:snippets/${vmTemplateid}_cloudinit_userdata-custom.yaml"
テンプレートの作成
qm template ${vmTemplateid}
テンプレートからデプロイ
vmid=123qm clone ${vmTemplateid} ${vmid} --name ubuntu1
パワーオン
Qemu Guest Agentが動作しているはずなので、GUIにVMのIPアドレスが表示されるはず。
それにしても、コンテナでもCloud-initが動けばなぁ。というわけで、Proxmoxでのコンテナの利用は、無し寄りの無しになりました。まぁおまけだよなぁ。Proxmoxに普通にVM入れて、そこにLXDを入れた方が便利。(意見には個人差があります。)