succi0303 blog

This is my personal blog. All posts are my own.

Proxmox VEでCloud-Initを使ってUbuntu 24.04のVMを構築する

Proxmox VEでより手軽に作業用のVMを作る方法としてCloud-Initを使ったUbuntu 24.04 VMの作成を試した。

Cloud-Init用のテンプレートの作成

Ubuntu公式のクラウドイメージをダウンロードしてVMのテンプレートを作る。

Ubuntu 24.04のクラウドイメージはディスクサイズが2.4GBしかないためテンプレート作成前にディスクサイズを増やす。

cloud-images.ubuntu.com

# パッケージ準備
apt-get update && apt-get install -y libguestfstools

# Ubuntu-24.04 クラウドイメージのダウンロード
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

# クラウドイメージにqemu-guest-agentをインストール、machine-idを初期化
virt-customize -a noble-server-cloudimg-amd64.img --install qemu-guest-agent
virt-customize -a noble-server-cloudimg-amd64.img --run-command "echo -n > /etc/machine-id"

# テンプレート用にVMを作成 ID: 9000を使用
qm create 9000 --name "ubuntu-24.04-template" --memory 2048 --cores 2 --cpu cputype=host --net0 virtio,bridge=vmbr0

# テンプレートVMにCloud-initイメージのディスクをインポート
qm importdisk 9000 noble-server-cloudimg-amd64.img local-lvm

# インポートしたディスクをVMにアタッチ
qm set 9000 --scsihw virtio-scsi-single
qm set 9000 --scsi0 local-lvm:vm-9000-disk-0,discard=on,ssd=1,iothread=1

# Cloud-Initドライブの追加とブート設定
qm set 9000 --boot c --bootdisk scsi0
qm set 9000 --ide2 local-lvm:cloudinit

# Proxmoxゲストエージェント有効、シリアルコンソール利用
qm set 9000 --agent enabled=1
qm set 9000 --serial0 socket --vga serial0


# ディスクサイズを拡張
qm resize 9000 scsi0 10G

# 自動アップデート有効
qm set 9000 --ciupgrade 1

# ユーザー設定
qm set 9000 --ciuser ubuntu
qm set 9000 --cipassword ''

# テンプレート化
qm template 9000

テンプレートからVMをデプロイ

作成したテンプレートをもとにVMをデプロイする。

# テンプレートを新しいVMとしてクローン
qm clone 9000 100 —name ubuntu-vm —full

# CPUコアとメモリを割り当て
qm set 100 —cores 2 —memory 4096

# ログイン設定の更新
qm set 100 —ciuser “exampleuser”
qm set 100 —cipassword “password123”
qm set 100 —sshkeys ~/.ssh/id_rsa.pub

# ネットワーク設定の更新
qm set 100 --net0 virtio,bridge=vnet0
qm set 100 --ipconfig0 ip=dhcp # DHCPの場合
qm set 100 --ipconfig0 ip=192.168.1.50 # 固定IPの場合

# VMの起動
qm start 100

Proxmox VEのWeb UIでVMのコンソールに接続して正常起動を確認する。

Cloud-Initを利用することでVMを作成するたびにOSの初期設定をする必要がなくなった。また、コマンドラインを使うことでWeb UIを使うよりも簡単にVMを作成できた。

pve.proxmox.com