provider "proxmox" { endpoint = var.proxmox_server api_token = var.proxmox_apikey ssh { agent = true username = "terraform" } } resource "proxmox_virtual_environment_download_file" "fedora_cloud_image" { content_type = "iso" datastore_id = "local" node_name = "fedora" url = "https://dl.fedoraproject.org/pub/fedora/linux/releases/41/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-41-1.4-x86_64.qcow2" file_name = "Fedora-Cloud-Base-41.qcow2.img" } resource "proxmox_virtual_environment_file" "fedora_user_data" { content_type = "snippets" datastore_id = "local-snippets" # outro storage configurado com Snippets node_name = "pve" source_raw { data = <<-EOF #cloud-config hostname: fedora-template users: - name: meuuser ssh_pwauth: true sudo: ALL=(ALL) NOPASSWD:ALL chpasswd: list: | root:SenhaRoot123 meuuser:SenhaUser123 expire: False package_update: true packages: - qemu-guest-agent runcmd: - systemctl enable qemu-guest-agent - systemctl start qemu-guest-agent EOF file_name = "fedora-cloud-init.yaml" } } resource "proxmox_virtual_environment_vm" "proxmox-kubernetes-VM-template" { name = "proxmox-kubernetes-VM-template" node_name = "fenix" vm_id = 1002 template = true started = false agent { enabled = true } tags = ["opentofu", "kubernetes", "fedora"] machine = "q35" bios = "seabios" description = "kubernetes VM Template created via iac" cpu { cores = 2 } memory { dedicated = 4096 } # Configuração do disco rígido disk { datastore_id = "local-lvm" interface = "scsi0" size = 64 } disk { datastore_id = "local-lvm" # armazenamento para disco da VM file_id = proxmox_virtual_environment_download_file.fedora_cloud_image.id interface = "scsi1" size = 10 iothread = true discard = "on" } # Configuração da interface de rede network_device { bridge = "vmbr0" model = "virtio" } initialization { ip_config { ipv4 { address = "192.168.1.24/24" # IP estático + máscara de rede gateway = "192.168.1.1" # Gateway da rede } } user_data_file_id = proxmox_virtual_environment_file.fedora_user_data.id } } resource "proxmox_virtual_environment_vm" "VM-Kubernetes-01" { depends_on = [proxmox_virtual_environment_vm.proxmox-kubernetes-VM-template] name = "VM-Kubernetes-01" node_name = "fenix" clone { vm_id = proxmox_virtual_environment_vm.proxmox-kubernetes-VM-template.id } agent { enabled = true } }