terraform: refactor cloud-init to use proxmox_cloud_init_disk resource
Replace SSH upload approach with native proxmox_cloud_init_disk resource for cleaner, more maintainable cloud-init management. Changes: - Use proxmox_cloud_init_disk for all VMs (not just branch-specific ones) - Include SSH keys, network config, and metadata in cloud-init disk - Conditionally include NIXOS_FLAKE_BRANCH for VMs with flake_branch set - Replace ide2 cloudinit disk with cdrom reference to cloud-init disk - Remove built-in cloud-init parameters (ciuser, sshkeys, etc.) - Remove cicustom parameter (no longer needed) - Remove proxmox_host variable (no SSH uploads required) - Remove .gitignore entry for .generated/ directory Benefits: - No SSH access to Proxmox required - All cloud-init config managed in Terraform - Consistent approach for all VMs - Cleaner state management Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -32,10 +32,10 @@ locals {
|
||||
# "minimal-vm" = {}
|
||||
# "bootstrap-verify-test" = {}
|
||||
"testvm01" = {
|
||||
ip = "10.69.13.101/24"
|
||||
cpu_cores = 2
|
||||
memory = 2048
|
||||
disk_size = "20G"
|
||||
ip = "10.69.13.101/24"
|
||||
cpu_cores = 2
|
||||
memory = 2048
|
||||
disk_size = "20G"
|
||||
flake_branch = "pipeline-testing-improvements"
|
||||
}
|
||||
}
|
||||
@@ -104,8 +104,9 @@ resource "proxmox_vm_qemu" "vm" {
|
||||
}
|
||||
ide {
|
||||
ide2 {
|
||||
cloudinit {
|
||||
storage = each.value.storage
|
||||
# Reference the custom cloud-init disk created in cloud-init.tf
|
||||
cdrom {
|
||||
iso = proxmox_cloud_init_disk.ci[each.key].id
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,18 +118,6 @@ resource "proxmox_vm_qemu" "vm" {
|
||||
# Agent
|
||||
agent = 1
|
||||
|
||||
# Cloud-init configuration
|
||||
ciuser = "root"
|
||||
sshkeys = each.value.ssh_public_key
|
||||
nameserver = each.value.nameservers
|
||||
searchdomain = each.value.search_domain
|
||||
|
||||
# Network configuration - DHCP or static IP
|
||||
ipconfig0 = each.value.ip != null ? "ip=${each.value.ip},gw=${each.value.gateway}" : "ip=dhcp"
|
||||
|
||||
# Custom cloud-init disk for branch configuration (if flake_branch is set)
|
||||
cicustom = each.value.flake_branch != null ? "user=${each.value.storage}:snippets/cloud-init-${each.key}.yml" : null
|
||||
|
||||
# Skip IPv6 since we don't use it
|
||||
skip_ipv6 = true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user