aboutsummaryrefslogtreecommitdiff
path: root/opentofu/main.tf
diff options
context:
space:
mode:
authorclyhtsuriva <aimeric@adjutor.xyz>2025-02-02 16:05:38 +0100
committerclyhtsuriva <aimeric@adjutor.xyz>2025-02-02 16:05:38 +0100
commit93f98bb6051fa702458f6853873a4443a401ba87 (patch)
tree892714042cebda841112956d7373fcd0896dd890 /opentofu/main.tf
parented15ef307a5977816328b516a15436050232d99a (diff)
opentofu: definition of a docker ready machine
First iteration, will be optimized later
Diffstat (limited to 'opentofu/main.tf')
-rw-r--r--opentofu/main.tf70
1 files changed, 70 insertions, 0 deletions
diff --git a/opentofu/main.tf b/opentofu/main.tf
new file mode 100644
index 0000000..544bc35
--- /dev/null
+++ b/opentofu/main.tf
@@ -0,0 +1,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]
+}