resource "proxmox_virtual_environment_file" "cloud_config" { content_type = "snippets" datastore_id = "local" node_name = var.proxmox_node source_raw { data = <<-EOF #cloud-config chpasswd: list: | ubuntu:example expire: false hostname: example-hostname packages: - qemu-guest-agent runcmd: - systemctl enable qemu-guest-agent - systemctl start qemu-guest-agent users: - default - name: ubuntu groups: sudo shell: /bin/bash lock_passwd: true ssh-authorized-keys: - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPXX3ZtFW5sRVTb8CPDbGp0E/1uuNYnjlhnnkwF3iLVB sascha.koenig@azintec.com sudo: ALL=(ALL) NOPASSWD:ALL EOF file_name = "cloud-config.yaml" } } # Download Ubuntu Cloud Image resource "proxmox_virtual_environment_download_file" "ubuntu_cloud_image" { content_type = "iso" datastore_id = "local" node_name = var.proxmox_node url = "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" } # Configure VM with User Data Initialization resource "proxmox_virtual_environment_vm" "ubuntu_template" { name = "ubuntu-template" node_name = var.proxmox_node template = true started = false machine = "q35" bios = "ovmf" vm_id = 9000 cpu { cores = 2 } memory { dedicated = 2048 } efi_disk { datastore_id = "local-lvm" type = "4m" } disk { datastore_id = "local-lvm" file_id = proxmox_virtual_environment_download_file.ubuntu_cloud_image.id interface = "virtio0" iothread = true discard = "on" size = 20 } initialization { ip_config { ipv4 { address = "dhcp" } } user_data_file_id = proxmox_virtual_environment_file.cloud_config.id } network_device { bridge = "vmbr0" } } resource "proxmox_virtual_environment_vm" "ubuntu_clone" { name = "ubuntu-clone" node_name = var.proxmox_node clone { vm_id = proxmox_virtual_environment_vm.ubuntu_template.id } agent { enabled = true } memory { dedicated = 768 } initialization { datastore_id = "local-lvm" user_account { username = "user" password = "password" } dns { servers = ["1.1.1.1"] } ip_config { ipv4 { address = "dhcp" } } } } resource "null_resource" "disable_kvm" { depends_on = [proxmox_virtual_environment_vm.ubuntu_clone] provisioner "local-exec" { command = "qm set ${proxmox_virtual_environment_vm.ubuntu_clone.vm_id} --args '-no-kvm'" } } output "nixos_anywhere_command" { value = "nix run github:nix-community/nixos-anywhere -- --flake .#AZ-NIX-1 root@${proxmox_virtual_environment_vm.ubuntu_clone.ipv4_addresses[1][0]} --build-on-remote --ssh-port 2022" description = "Command to deploy NixOS using nixos-anywhere" }