新規 VM の追加¶
terraform/vms.tf に module ブロックを追加し、plan / apply で Proxmox 上に VM を作成する。
事前確認
手順¶
terraform/vms.tfにmodule "vm_<id>"ブロックを追加する- PR を作成し、CI の
terraform planを確認する(または手元でterraform plan) - merge 後に CI の apply で反映する(手元 apply も可)
- インベントリ を更新する
パターン A: ISO からインストールする¶
module "vm_300" {
source = "./modules/vm"
vm_id = 300
name = "example"
cores = 2
memory = 2048
disk = 32
on_boot = false
# cdrom = {
# file_id = "local:iso/ubuntu-24.04-live-server-amd64.iso"
# }
}
ISO の置き場所
local ストレージはノードごとに分かれる。
cdrom.file_id には VM の node_name と同じノード上 にある ISO を指定する。
パターン B: cloud image + cloud-init で作成する¶
disk_import_from に Proxmox 上の cloud image を指定し、cloud_init で初期設定する。
module "vm_210" {
source = "./modules/vm"
node_name = "pve-02"
vm_id = 210
name = "mail-server"
cores = 2
memory = 2048
disk = 20
on_boot = true
disk_import_from = "local:import/resolute-server-cloudimg-amd64.img.qcow2"
cloud_init = {
username = "ubuntu"
fqdn = "mail.example.com"
ipv4_address = "192.168.40.210/24"
ipv4_gateway = "192.168.40.1"
}
}
snippet 変更時の再作成
cloud-init テンプレート(terraform/modules/vm/cloud-init/)の内容を変えると、VM の initialization が置き換わり、VM 自体が再作成される場合がある。
よく使うオプション¶
| 目的 | 指定例 |
|---|---|
| apply 時に起動しない | started = false |
| ホスト起動時に自動起動しない | on_boot = false |
| OVMF (UEFI) | bios = "ovmf" と efi_disk |
| NIC を明示 | network_device = { bridge = "vmbr0" } |