From 2ba7e9d986c2216b3424469f14f9ac0470f21710 Mon Sep 17 00:00:00 2001 From: Gitea Actions Date: Wed, 2 Jul 2025 11:37:58 +0000 Subject: [PATCH] Auto-update blog content from Obsidian: 2025-07-02 11:37:58 --- .../terraform-create-pve-vm-module-proxmox.md | 266 +++++++++++++++++- ...mox-vm-deployed-using-terraform-module.png | Bin 0 -> 27755 bytes 2 files changed, 262 insertions(+), 4 deletions(-) create mode 100644 static/img/proxmox-vm-deployed-using-terraform-module.png diff --git a/content/post/terraform-create-pve-vm-module-proxmox.md b/content/post/terraform-create-pve-vm-module-proxmox.md index 67e1f45..0647b9c 100644 --- a/content/post/terraform-create-pve-vm-module-proxmox.md +++ b/content/post/terraform-create-pve-vm-module-proxmox.md @@ -41,7 +41,7 @@ terraform ### Module's Code -Basically, the module files are those from the project we are transforming. I just kept out the parts related to the proxmox cluster, which will stay at the project level. +📝 Basically, the module files are the same as the project files we are transforming. The module `pve_vm` will be decomposed in 3 files: - **main**: The core logic @@ -256,7 +256,7 @@ variable "vm_tags" { ``` -## Deploy a VM Using our Module +## Deploy a VM Using our Module Now that we've moved all the resources required to deploy our VM into the `pve_vm` module, our project folder only needs to call that module and provide the necessary variables. @@ -279,7 +279,7 @@ terraform ### Project's Code -In this example, I manually provide the values when calling my module, the others are related to the cluster +In this example, I manually provide the values when calling my module. I kept the proxmox secret variables because they are automatically sourced from the project, but I need to define them here. #### `main.tf` ```hcl @@ -312,4 +312,262 @@ variable "proxmox_api_token" { type = string sensitive = true } -``` \ No newline at end of file +``` +#### `credentials.auto.tfvars` + +```hcl +proxmox_endpoint = +proxmox_api_token = +``` + +### Initialize the Terraform Workspace + +In our new project, we first need to initialize the Terraform workspace with `terraform init`: +```bash +$ terraform init +Initializing the backend... +Initializing modules... +- pve_vm in ../../modules/pve_vm +Initializing provider plugins... +- Finding latest version of bpg/proxmox... +- Installing bpg/proxmox v0.78.2... +- Installed bpg/proxmox v0.78.2 (self-signed, key ID F0582AD6AE97C188) +Partner and community providers are signed by their developers. +If you'd like to know more about provider signing, you can read about it here: +https://www.terraform.io/docs/cli/plugins/signing.html +Terraform has created a lock file .terraform.lock.hcl to record the provider +selections it made above. Include this file in your version control repository +so that Terraform can guarantee to make the same selections by default when +you run "terraform init" in the future. + +Terraform has been successfully initialized! + +You may now begin working with Terraform. Try running "terraform plan" to see +any changes that are required for your infrastructure. All Terraform commands +should now work. + +If you ever set or change modules or backend configuration for Terraform, +rerun this command to reinitialize your working directory. If you forget, other +commands will detect it and remind you to do so if necessary. +``` + +### Deploy the VM + +Before deploying it, make sure that everything is ok with a `terraform plan`. + +Once ready, you can deploy it with `terraform apply`: +```bash +$ terraform apply +module.pve_vm.data.proxmox_virtual_environment_vms.template: Reading... +module.pve_vm.data.proxmox_virtual_environment_vms.template: Read complete after 0s [id=89b444be-7501-4538-9436-08609b380d39] + +Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + + create + +Terraform will perform the following actions: + + # module.pve_vm.proxmox_virtual_environment_file.cloud_config will be created + + resource "proxmox_virtual_environment_file" "cloud_config" { + + content_type = "snippets" + + datastore_id = "local" + + file_modification_date = (known after apply) + + file_name = (known after apply) + + file_size = (known after apply) + + file_tag = (known after apply) + + id = (known after apply) + + node_name = "zenith" + + overwrite = true + + timeout_upload = 1800 + + + source_raw { + + data = <<-EOT + #cloud-config + hostname: zenith-vm + package_update: true + package_upgrade: true + packages: + - qemu-guest-agent + users: + - default + - name: vez + groups: sudo + shell: /bin/bash + ssh-authorized-keys: + - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID62LmYRu1rDUha3timAIcA39LtcIOny1iAgFLnxoBxm vez@bastion" + sudo: ALL=(ALL) NOPASSWD:ALL + runcmd: + - systemctl enable qemu-guest-agent + - reboot + EOT + + file_name = "zenith-vm.cloud-config.yaml" + + resize = 0 + } + } + + # module.pve_vm.proxmox_virtual_environment_vm.vm will be created + + resource "proxmox_virtual_environment_vm" "vm" { + + acpi = true + + bios = "ovmf" + + id = (known after apply) + + ipv4_addresses = (known after apply) + + ipv6_addresses = (known after apply) + + keyboard_layout = "en-us" + + mac_addresses = (known after apply) + + machine = "q35" + + migrate = false + + name = "zenith-vm" + + network_interface_names = (known after apply) + + node_name = "zenith" + + on_boot = true + + protection = false + + reboot = false + + reboot_after_update = true + + scsi_hardware = "virtio-scsi-pci" + + started = true + + stop_on_destroy = true + + tablet_device = true + + tags = [ + + "test", + ] + + template = false + + timeout_clone = 1800 + + timeout_create = 1800 + + timeout_migrate = 1800 + + timeout_move_disk = 1800 + + timeout_reboot = 1800 + + timeout_shutdown_vm = 1800 + + timeout_start_vm = 1800 + + timeout_stop_vm = 300 + + vm_id = (known after apply) + + + agent { + + enabled = true + + timeout = "15m" + + trim = false + + type = "virtio" + } + + + clone { + + full = true + + node_name = "apex" + + retries = 1 + + vm_id = 900 + } + + + cpu { + + cores = 2 + + hotplugged = 0 + + limit = 0 + + numa = false + + sockets = 1 + + type = "host" + + units = 1024 + } + + + disk { + + aio = "io_uring" + + backup = true + + cache = "none" + + datastore_id = "ceph-workload" + + discard = "ignore" + + file_format = (known after apply) + + interface = "scsi0" + + iothread = false + + path_in_datastore = (known after apply) + + replicate = true + + size = 4 + + ssd = false + } + + + initialization { + + datastore_id = "ceph-workload" + + interface = "scsi1" + + meta_data_file_id = (known after apply) + + network_data_file_id = (known after apply) + + type = (known after apply) + + user_data_file_id = (known after apply) + + vendor_data_file_id = (known after apply) + + + ip_config { + + ipv4 { + + address = "dhcp" + } + } + } + + + memory { + + dedicated = 2048 + + floating = 0 + + keep_hugepages = false + + shared = 0 + } + + + network_device { + + bridge = "vmbr0" + + enabled = true + + firewall = false + + mac_address = (known after apply) + + model = "virtio" + + mtu = 0 + + queues = 0 + + rate_limit = 0 + + vlan_id = 66 + } + + + operating_system { + + type = "l26" + } + + + vga { + + memory = 16 + + type = "std" + } + } + +Plan: 2 to add, 0 to change, 0 to destroy. + +Changes to Outputs: + + vm_ip = (known after apply) + +Do you want to perform these actions? + Terraform will perform the actions described above. + Only 'yes' will be accepted to approve. + + Enter a value: yes + +module.pve_vm.proxmox_virtual_environment_file.cloud_config: Creating... +module.pve_vm.proxmox_virtual_environment_file.cloud_config: Creation complete after 1s [id=local:snippets/zenith-vm.cloud-config.yaml] +module.pve_vm.proxmox_virtual_environment_vm.vm: Creating... +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [10s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [20s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [30s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [40s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [50s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [1m0s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [1m10s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [1m20s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [1m30s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [1m40s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [1m50s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [2m0s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [2m10s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [2m20s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [2m30s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [2m40s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [2m50s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [3m0s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Still creating... [3m10s elapsed] +module.pve_vm.proxmox_virtual_environment_vm.vm: Creation complete after 3m13s [id=103] + +Apply complete! Resources: 2 added, 0 changed, 0 destroyed. + +Outputs: + +vm_ip = "192.168.66.159" +``` + +✅ The VM is now ready! + +![VM on Proxmox WebUI deployed using a Terraform module](img/proxmox-vm-deployed-using-terraform-module.png) +🕗 *Don't pay attention to the uptime, I took the screenshot the next day* + diff --git a/static/img/proxmox-vm-deployed-using-terraform-module.png b/static/img/proxmox-vm-deployed-using-terraform-module.png new file mode 100644 index 0000000000000000000000000000000000000000..ab77fb3a2dfd849b24951c00f08d01b12ab20b6c GIT binary patch literal 27755 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 literal 0 HcmV?d00001