aboutsummaryrefslogtreecommitdiff
path: root/opentofu/main.tf
blob: ff9f9452a3faadfdbd2f3bec9de84d9c0ada030a (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
resource "proxmox_virtual_environment_vm" "docker_server" {
  name        = "docker-server"
  description = "Debian server with docker installed."
  tags        = ["debian", "docker"]
  node_name   = var.proxmox_node

  clone {
    vm_id = var.debian_server_bookworm_packer_image_id # Use the VM ID of the template
    full  = true
  }

  agent {
    enabled = true # Qemu Guest Agent
  }

  cpu {
    cores   = 2
    sockets = 1
    type    = "host"
  }

  memory {
    dedicated = 4096
  }

  disk {
    interface    = "virtio0"
    datastore_id = "local-lvm"
    size         = 20
    discard      = "on"
    iothread     = true
  }

  network_device {
    bridge = "vmbr0"
    model  = "virtio"
  }

  initialization {
    ip_config {
      ipv4 {
        address = "dhcp"
      }
    }

    user_account {
      username = var.vm_username
      keys     = [var.ssh_public_key]
    }
  }
}

# Run Ansible playbook after VM creation to install Docker
module "ansible_provision_docker_server" {
  source                = "./modules/ansible_provisioner"
  vm_ip                 = proxmox_virtual_environment_vm.docker_server.ipv4_addresses[1][0] # Use first ip & ensure this is a string
  vm_username           = var.vm_username
  ssh_private_key_path  = var.ssh_private_key_path
  ansible_playbook_path = var.docker_ansible_playbook_path
  depends_on            = [proxmox_virtual_environment_vm.docker_server]
}
}