0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu 24.04 LTS Cloud ImageでProxmoxVEのCloud-initテンプレートを作る方法

0
Posted at

はじめに

Proxmox VEでUbuntu ServerのVMを何台も作るなら、ISOから毎回インストールするより、Ubuntu Cloud Image + Cloud-init + VMテンプレート の構成にした方が便利です。
Cloud-initを使うことで、VMクローン時にユーザー名、SSH公開鍵、IPアドレス、DNSなどをProxmox側から注入できるためです。

環境

この記事での想定環境は次の通りです。

テンプレートVMID: 9000
テンプレート名: ubuntu-2404-cloudinit
ストレージ: local-lvm
ネットワークブリッジ: vmbr0

環境に合わせて、local-lvmvmbr0 は変更してください。

Ubuntu 24.04 LTS Cloud Imageをダウンロード

ProxmoxノードのShellに入ります。

cd /var/lib/vz/template/iso

Ubuntu 24.04 LTS、Noble NumbatのCloud Imageをダウンロードします。
Ubuntu公式のreleaseディレクトリには、ubuntu-24.04-server-cloudimg-amd64.img が配布されています。(Ubuntu Cloud Images)

wget https://cloud-images.ubuntu.com/releases/noble/release/ubuntu-24.04-server-cloudimg-amd64.img

cloud-images.ubuntu.com/noble/current/ にはDaily Buildもあります。
通常は releases/noble/release/ のイメージをおすすめします。

Cloud Imageに QEMU Guest Agentをインストール

テンプレート化する前に、Ubuntu Cloud Imageへ qemu-guest-agent を入れておきます。

apt update
apt install -y libguestfs-tools

virt-customize -a ubuntu-24.04-server-cloudimg-amd64.img \
  --install qemu-guest-agent \
  --run-command 'systemctl enable qemu-guest-agent'

Guest Agentを使うと、Proxmox側からVMのIPアドレスなどを確認しやすくなります。
また、これ以降はProxmoxVEのWebGUIからも設定できます。

テンプレート用VMを作成

まず、空のVMを作成します。

qm create 9000 \
  --name ubuntu-2404-cloudinit \
  --memory 2048 \
  --cores 2 \
  --net0 virtio,bridge=vmbr0 \
  --ostype l26

ここではまだOSはインストールしません
Cloud Imageをディスクとして取り込むためのVMを設定するだけです。

Cloud ImageをProxmoxのディスクとして取り込む

ダウンロードした .img ファイルを、ProxmoxのVMディスクとしてインポートします。

qm importdisk 9000 ubuntu-24.04-server-cloudimg-amd64.img local-lvm

成功するとSuccessfully imported disk as 'unused0:local-lvm:vm-9000-disk-0'と出力されます。

インポート後、そのディスクをVMの scsi0 に接続します。

qm set 9000 \
  --scsihw virtio-scsi-pci \
  --scsi0 local-lvm:vm-9000-disk-0

ストレージ名が local-lvm ではない場合は、自分の環境に合わせて変更してください。

image.png
変更した内容はGUI上からも確認できます。


Cloud-initドライブを追加する

次に、Cloud-init用のドライブを追加します。

qm set 9000 --ide2 local-lvm:cloudinit

成功したらgenerating cloud-init ISOと出力され、GUIからも確認できます。

Proxmoxでは、このCloud-initドライブ経由でユーザー名、SSH鍵、ネットワーク設定などをVMに渡します。


起動設定とコンソール設定

Cloud Imageのディスクから起動するように設定します。

qm set 9000 --boot c --bootdisk scsi0

シリアルコンソールの設定も入れておきます。

qm set 9000 --serial0 socket --vga serial0

QEMU Guest Agentも有効化しておきます。

qm set 9000 --agent enabled=1

Cloud-initの初期値を設定

テンプレートにCloud-initの基本設定を入れておきます。

qm set 9000 --ciuser ubuntu

SSH公開鍵を設定します。

qm set 9000 --sshkeys ~/.ssh/id_ed25519.pub

パスワードを設定する場合は次のようにします。
なお、Ubuntu Cloud ImageはデフォルトではパスワードでSSHにログインできません。

qm set 9000 --cipassword 'パスワードを入力'

DHCPでIPアドレスを取得する場合は、次のようにします。

qm set 9000 --ipconfig0 ip=dhcp

固定IPにしたい場合は、次のように指定します。

qm set 9000 --ipconfig0 ip=192.168.1.50/24,gw=192.168.1.1
qm set 9000 --nameserver 1.1.1.1

テンプレートではDHCPにしておき、クローン後のVMごとに固定IPを設定する運用がおすすめです。

ディスクサイズの拡張

Ubuntu Cloud Imageの初期ディスクサイズは小さめです。テンプレート化する前に、必要に応じて拡張しておきます。

ディスクを32GBにする場合は次のようにします。

qm resize 9000 scsi0 32G

Cloud Image側では、初回起動時にCloud-initやgrowpartによってルートパーティションが拡張される構成になっていることが多いです。

VMをテンプレート化する

ここまで設定したら、VMをテンプレート化します。

qm template 9000

これで、ProxmoxのGUI上でもテンプレートとして表示されます。

テンプレート化する前は、VMを起動しないほうが安全です。
起動してしまうと、machine-idやSSH host keyなどが生成され、クローン間で重複する原因となることがあります。

テンプレートからVMを作成

作成したテンプレートから、新しいVM(ID150)をクローンします。

qm clone 9000 150 \
  --name ubuntu-test \
  --full true

クローンしたVMにCloud-init設定を入れます。

qm set 150 --ciuser ubuntu
qm set 150 --sshkeys ~/.ssh/id_ed25519.pub
qm set 150 --ipconfig0 ip=dhcp

固定IPにする場合は、次のようにします。

qm set 150 --ipconfig0 ip=192.168.1.151/24,gw=192.168.1.1
qm set 150 --nameserver 1.1.1.1

VMを起動します。

qm start 100

SSHで接続する

DHCPで起動した場合、ProxmoxのGUIやルーターのDHCPリース情報からIPアドレスを確認します。

Guest Agentが使える状態であれば、次のコマンドでネットワーク情報を確認できます。

qm guest cmd 100 network-get-interfaces

SSHで接続します。

ssh -i ~/.ssh/id_ed25519 ubuntu@192.168.1.151

補足

Ubuntu Cloud Imagesは、Ubuntu公式のクラウド向けイメージです。
通常のISOインストーラーではなく、すでにインストール済みのディスクイメージとして配布されており、Ubuntu公式ページでもCloud Imagesは「pre-installed disk images」と説明されています。(Ubuntu Cloud Images)

また、Proxmox公式ドキュメントでもCloud-initディスクを追加してVMテンプレート化する方法が記載されています。(Proxmox VE)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?