Instalacja terraforma


# ściągnięcie i modyfikacja pluginu, jeżeli terraform nie ma mieć dostępu do wszystkich pul
git clone https://github.com/Telmate/terraform-provider-proxmox /home/pcss/github.com/Telmate/terraform-provider-proxmox
cd github.com/Telmate/terraform-provider-proxmox/

zmodyfikować plik proxmox/provider.go, by nie sprawdzał uprawnień
make

PLUGIN_ARCH=linux_amd64
mkdir -p ~/.terraform.d/plugins/registry.example.com/telmate/proxmox/1.0.0/${PLUGIN_ARCH}
cp bin/terraform-provider-proxmox ~/.terraform.d/plugins/registry.example.com/telmate/proxmox/1.0.0/${PLUGIN_ARCH}/ # powtórzyć, jeśli ściągnie oryginał


Przykładowy plik terraforma


Plik zakłada 3 maszyny wirtualne i konfiguruje adresy ip oraz klucze ssh korzystając z cloud-init.



resource "proxmox_vm_qemu" proxmox-virt" {
   
    count = 3
    name = "proxmox-virt-${count.index + 1}"
    desc = "openstack labitaas kolla controller"
    vmid = 1521+count.index

    target_node = "hx-core-${count.index + 1}"

    pool = "POOL01"

    clone = "ubuntu-22-template"

    agent = 1

    os_type = "cloud-init"
    define_connection_info = false
    qemu_os = "l26"
    cores = 8
    sockets = 1
    memory = "16384"
    scsihw = "virtio-scsi-pci"
    bootdisk = "scsi0"
    disk {
    slot = 0
        size = "80G"
        type = "scsi"
        storage = "STORAGE01"
    iothread = 0
    }

    network {
        model = "virtio"
        bridge = "vmbr1"
    }
    network {
        model = "virtio"
        bridge = "vmbr2"
    }
    network {
        model = "virtio"
        bridge = "vmbr3"
    }

    lifecycle {
      ignore_changes  = [
        target_node, disk
      ]
    }

    ipconfig0 = "ip=172.16.1.20${count.index + 1}/20"
    ipconfig1 = "ip=172.16.2.20${count.index + 1}/20,gw=172.16.2.254"
    ipconfig2 = "ip=172.16.3.20${count.index + 1}/20"
    nameserver = "1.1.1.1"
    ciuser = var.username
    sshkeys = var.sshkeys