From a681e828bfe3de8e680a4c0c7ea3a363d98e3766 Mon Sep 17 00:00:00 2001 From: Pavel Boldyrev <627562+bpg@users.noreply.github.com> Date: Wed, 19 Mar 2025 22:11:07 -0400 Subject: [PATCH] chore(docs): update cloud-init configuration examples (#1830) * chore(docs): update cloud-init and VM configuration examples - Added timezone and package installation for qemu-guest-agent in cloud-init configuration. - Updated VM configuration to include 'started' attribute and clarified agent usage in documentation. Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> * not sure why the image checksum has changed This looks a bit suspicious, but I can ignore this for the test code. In production that would be a red flag requiring investigation Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> --------- Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> --- docs/guides/clone-vm.md | 10 ++++++---- docs/guides/cloud-init.md | 15 ++++++++------ example/resource_virtual_environment_file.tf | 20 +++++++++---------- example/variables.tf | 2 +- examples/guides/clone-vm/clone.tf | 5 +++++ examples/guides/clone-vm/cloud-config.tf | 15 ++++++++------ examples/guides/clone-vm/template.tf | 5 +---- .../guides/cloud-init/custom/cloud-config.tf | 15 ++++++++------ main.go | 2 +- 9 files changed, 51 insertions(+), 38 deletions(-) diff --git a/docs/guides/clone-vm.md b/docs/guides/clone-vm.md index 0df882d1..5b0d5391 100644 --- a/docs/guides/clone-vm.md +++ b/docs/guides/clone-vm.md @@ -20,15 +20,12 @@ resource "proxmox_virtual_environment_vm" "ubuntu_template" { node_name = "pve" template = true + started = false machine = "q35" bios = "ovmf" description = "Managed by Terraform" - agent { - enabled = true - } - cpu { cores = 2 } @@ -89,6 +86,11 @@ resource "proxmox_virtual_environment_vm" "ubuntu_clone" { } agent { + # NOTE: The agent is installed and enabled as part of the cloud-init configuration in the template VM, see cloud-config.tf + # The working agent is *required* to retrieve the VM IP addresses. + # If you are using a different cloud-init configuration, or a different clone source + # that does not have the qemu-guest-agent installed, you may need to disable the `agent` below and remove the `vm_ipv4_address` output. + # See https://registry.terraform.io/providers/bpg/proxmox/latest/docs/resources/virtual_environment_vm#qemu-guest-agent for more details. enabled = true } diff --git a/docs/guides/cloud-init.md b/docs/guides/cloud-init.md index 983aec1c..e44220fc 100644 --- a/docs/guides/cloud-init.md +++ b/docs/guides/cloud-init.md @@ -82,6 +82,7 @@ resource "proxmox_virtual_environment_file" "user_data_cloud_config" { data = <<-EOF #cloud-config hostname: test-ubuntu + timezone: America/Toronto users: - default - name: ubuntu @@ -91,13 +92,15 @@ resource "proxmox_virtual_environment_file" "user_data_cloud_config" { ssh_authorized_keys: - ${trimspace(data.local_file.ssh_public_key.content)} sudo: ALL=(ALL) NOPASSWD:ALL + package_update: true + packages: + - qemu-guest-agent + - net-tools + - curl runcmd: - - apt update - - apt install -y qemu-guest-agent net-tools - - timedatectl set-timezone America/Toronto - - systemctl enable qemu-guest-agent - - systemctl start qemu-guest-agent - - echo "done" > /tmp/cloud-config.done + - systemctl enable qemu-guest-agent + - systemctl start qemu-guest-agent + - echo "done" > /tmp/cloud-config.done EOF file_name = "user-data-cloud-config.yaml" diff --git a/example/resource_virtual_environment_file.tf b/example/resource_virtual_environment_file.tf index d7c48d37..91beefc9 100644 --- a/example/resource_virtual_environment_file.tf +++ b/example/resource_virtual_environment_file.tf @@ -35,14 +35,14 @@ resource "proxmox_virtual_environment_file" "vendor_config" { node_name = data.proxmox_virtual_environment_datastores.example.node_name source_raw { - data = < /tmp/vendor-cloud-init-done + data = <<-EOF + #cloud-config + runcmd: + - apt update + - apt install -y qemu-guest-agent + - systemctl enable qemu-guest-agent + - systemctl start qemu-guest-agent + - echo "done" > /tmp/vendor-cloud-init-done EOF file_name = "terraform-provider-proxmox-example-vendor-config.yaml" @@ -56,8 +56,8 @@ resource "proxmox_virtual_environment_file" "meta_config" { node_name = data.proxmox_virtual_environment_datastores.example.node_name source_raw { - data = < /tmp/cloud-config.done + - systemctl enable qemu-guest-agent + - systemctl start qemu-guest-agent + - echo "done" > /tmp/cloud-config.done EOF file_name = "user-data-cloud-config.yaml" diff --git a/examples/guides/clone-vm/template.tf b/examples/guides/clone-vm/template.tf index 76c5f102..ec93fa42 100644 --- a/examples/guides/clone-vm/template.tf +++ b/examples/guides/clone-vm/template.tf @@ -3,15 +3,12 @@ resource "proxmox_virtual_environment_vm" "ubuntu_template" { node_name = "pve" template = true + started = false machine = "q35" bios = "ovmf" description = "Managed by Terraform" - agent { - enabled = true - } - cpu { cores = 2 } diff --git a/examples/guides/cloud-init/custom/cloud-config.tf b/examples/guides/cloud-init/custom/cloud-config.tf index 386479ca..05f57509 100644 --- a/examples/guides/cloud-init/custom/cloud-config.tf +++ b/examples/guides/cloud-init/custom/cloud-config.tf @@ -11,6 +11,7 @@ resource "proxmox_virtual_environment_file" "user_data_cloud_config" { data = <<-EOF #cloud-config hostname: test-ubuntu + timezone: America/Toronto users: - default - name: ubuntu @@ -20,13 +21,15 @@ resource "proxmox_virtual_environment_file" "user_data_cloud_config" { ssh_authorized_keys: - ${trimspace(data.local_file.ssh_public_key.content)} sudo: ALL=(ALL) NOPASSWD:ALL + package_update: true + packages: + - qemu-guest-agent + - net-tools + - curl runcmd: - - apt update - - apt install -y qemu-guest-agent net-tools - - timedatectl set-timezone America/Toronto - - systemctl enable qemu-guest-agent - - systemctl start qemu-guest-agent - - echo "done" > /tmp/cloud-config.done + - systemctl enable qemu-guest-agent + - systemctl start qemu-guest-agent + - echo "done" > /tmp/cloud-config.done EOF file_name = "user-data-cloud-config.yaml" diff --git a/main.go b/main.go index 33dac991..4b679bd2 100644 --- a/main.go +++ b/main.go @@ -32,7 +32,7 @@ import ( // Temporary: while migrating to the TF framework, we need to copy the generated docs to the right place // for the resources / data sources that have been migrated. -// //go:generate cp -R ./build/docs-gen/guides/. ./docs/guides/ +//go:generate cp -R ./build/docs-gen/guides/. ./docs/guides/ //go:generate cp ./build/docs-gen/data-sources/virtual_environment_acme_account.md ./docs/data-sources/ //go:generate cp ./build/docs-gen/data-sources/virtual_environment_acme_accounts.md ./docs/data-sources/ //go:generate cp ./build/docs-gen/data-sources/virtual_environment_acme_plugin.md ./docs/data-sources/