provider "proxmox" { endpoint = var.proxmox_server api_token = var.proxmox_apikey ssh { agent = true username = var.proxmox_username_ssh socks5_server = var.proxmox_server_ssh password = var.proxmox_password_ssh node { name = "fenix" address = "127.0.0.1" port = 1081 } } } resource "proxmox_virtual_environment_download_file" "latest_ubunto_cloud_img" { content_type = "iso" datastore_id = "local" node_name = "fenix" url = "https://cloud-images.ubuntu.com/jammy/20250725/jammy-server-cloudimg-amd64.img" file_name = "jammyservercloudimgamd64.img" } resource "proxmox_virtual_environment_file" "cloud_init_yaml" { content_type = "snippets" datastore_id = "local-snippets" node_name = "fenix" source_raw { data = <<-EOF #cloud-config hostname: test-ubuntu timezone: America/Toronto users: - default - name: testeuser plain_text_passwd: testepassword groups: - sudo shell: /bin/bash sudo: ALL=(ALL) NOPASSWD:ALL package_update: true packages: - qemu-guest-agent - net-tools - curl runcmd: - systemctl enable qemu-guest-agent - systemctl start qemu-guest-agent - echo "done" > /tmp/cloud-config.done EOF file_name = "user-data-cloud-config.yaml" } } resource "proxmox_virtual_environment_vm" "proxmox-kubernetes-VM-template" { depends_on = [proxmox_virtual_environment_download_file.latest_ubunto_cloud_img, proxmox_virtual_environment_file.cloud_init_yaml] 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 = "scsi1" size = 64 } # >>>> Disco especial cloud-init disk { datastore_id = "local-lvm" interface = "ide2" file_format = "cloudinit" } disk { datastore_id = "local-lvm" file_id = proxmox_virtual_environment_download_file.latest_ubunto_cloud_img.id interface = "scsi0" file_format = "qcow2" } # Configuração da interface de rede network_device { bridge = "vmbr0" model = "virtio" } initialization { ip_config { ipv4 { address = "dhcp" # IP estático + máscara de rede } } user_data_file_id = proxmox_virtual_environment_file.cloud_init_yaml.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 } }