前回、Terraform を使って Proxmox VE に VM を作成した。 このとき作成した main.tf は最小限の項目しか設定していなかったので、VM のパラメータを設定するように変更する。

設定項目はドキュメントを参照した。VM のネットデバイスやディスクは個別のブロックで設定するらしい。

terraform {
  required_providers {
    proxmox = {
      source  = "telmate/proxmox"
      version = "~> 2.9.10"
    }
  }
}

provider "proxmox" {
  pm_api_url = "https://pve1.nnstt1.home:8006/api2/json"
}

resource "proxmox_vm_qemu" "terraform-test" {
  name        = "terraform-test"
  target_node = "pve1"
  iso         = "local:iso/Fedora-Server-dvd-x86_64-36-1.5.iso"

  ### 以下、追加した項目
  bios        = "ovmf"
  onboot      = true
  memory      = 2048
  sockets     = 1
  cores       = 2
  cpu         = "host"
  scsihw      = "pvscsi"

  # Disk block
  disk {
    type      = "scsi"
    storage   = "local-lvm"
    size      = "20G"
    format    = "raw"
  }

  # Network block
  network {
    model     = "vmxnet3"
    bridge    = "vmbr0"
  }
}

名前通りの設定をすればよいので難しい点はなさそう。

注意点としては、Disk ブロックで storage に LVM, ZFS, Ceph のいずれかのストレージを指定する場合、 formatraw を指定しなくてはいけない。 storage=local-lvm と format=qcow2 の組み合わせで terraform apply したところ、正常終了しつつも VM にディスクが追加されない、という挙動になってしまった。

  • Qemu/KVM Virtual Machines

    Storages which present block devices (LVM, ZFS, Ceph) will require the raw disk image format, whereas files based storages (Ext4, NFS, CIFS, GlusterFS) will let you to choose either the raw disk image format or the QEMU image format.