Skip to content

新規 VM の追加

terraform/vms.tf に module ブロックを追加し、plan / apply で Proxmox 上に VM を作成する。

事前確認

手順

  1. terraform/vms.tf に module "vm_<id>" ブロックを追加する
  2. PR を作成し、CI の terraform plan を確認する(または手元で terraform plan)
  3. merge 後に CI の apply で反映する(手元 apply も可)
  4. インベントリ を更新する

パターン 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" }