aboutsummaryrefslogtreecommitdiff
path: root/opentofu/main.tf
blob: 544bc35a6bbf929f384e1d34a3372cc1b1813936 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
resource "proxmox_vm_qemu" "docker_server" {

  name        = "docker-server"
  desc        = "Debian server with docker installed."
  agent       = 1 # Qemu Guest Agent
  target_node = var.proxmox_node
  tags        = "debian,docker"

  clone      = var.packer_image_name
  full_clone = true

  qemu_os  = "other"
  cores    = 2
  sockets  = 1
  cpu_type = "host"
  memory   = 4096

  scsihw   = "virtio-scsi-pci"
  bootdisk = "scsi0"

  disks {
    ide {
      ide0 {
        cloudinit {
          storage = "local-lvm"
        }
      }
    }
    virtio {
      virtio0 {
        disk {
          storage   = "local-lvm"
          size      = "20G"
          iothread  = true
          replicate = false
        }
      }
    }
  }

  network {
    id     = 0
    model  = "virtio"
    bridge = "vmbr0"
  }

  # Cloud-Init settings
  ipconfig0 = "ip=dhcp"
  ciuser    = "mas"
  sshkeys   = var.ssh_public_key
}

# Run Ansible playbook after VM creation
resource "null_resource" "ansible_provisioner" {
  triggers = {
    vm_id = proxmox_vm_qemu.docker_server.id
  }

  provisioner "local-exec" {
    command = <<-EOT
      ANSIBLE_HOST_KEY_CHECKING=False ANSIBLE_CONFIG=${path.root}/../ansible/ansible.cfg ansible-playbook \
        -i '${proxmox_vm_qemu.docker_server.default_ipv4_address},' \
        -u ${var.vm_username} \
        --private-key ${var.ssh_private_key_path} \
        ${var.ansible_playbook_path}
    EOT
  }

  depends_on = [proxmox_vm_qemu.docker_server]
}