AZ-NIX/terraform/vms.tf
2025-08-01 08:43:04 +02:00

136 lines
2.8 KiB
HCL

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"
}