Telmate / terraform-provider-proxmox

Terraform provider plugin for proxmox
MIT License
2.21k stars 533 forks source link

terraform plugin crashes via slow cloning or sth while cloning existing template #1083

Open Reckoner911 opened 3 months ago

Reckoner911 commented 3 months ago

│ Error: Plugin did not respond │ │ with proxmox_vm_qemu.first-tf-vm, │ on main.tf line 19, in resource "proxmox_vm_qemu" "first-tf-vm": │ 19: resource "proxmox_vm_qemu" "first-tf-vm" { │ │ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may contain more details. ╵

Stack trace from the terraform-provider-proxmox_v2.9.14 plugin:

panic: interface conversion: interface {} is string, not float64

goroutine 81 [running]: github.com/Telmate/proxmox-api-go/proxmox.NewConfigQemuFromApi(0xc000142718, 0xc9d509?) github.com/Telmate/proxmox-api-go@v0.0.0-20230319185744-e7cde7198cdf/proxmox/config_qemu.go:584 +0x4605 github.com/Telmate/terraform-provider-proxmox/proxmox.resourceVmQemuCreate(0xc000357080, {0xb66f60?, 0xc00031c370}) github.com/Telmate/terraform-provider-proxmox/proxmox/resource_vm_qemu.go:972 +0x2c4d github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(Resource).create(0xdd7840?, {0xdd7840?, 0xc0004d0f90?}, 0xd?, {0xb66f60?, 0xc00031c370?}) github.com/hashicorp/terraform-plugin-sdk/v2@v2.25.0/helper/schema/resource.go:695 +0x178 github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(Resource).Apply(0xc000194ee0, {0xdd7840, 0xc0004d0f90}, 0xc0000b1040, 0xc000356f00, {0xb66f60, 0xc00031c370}) github.com/hashicorp/terraform-plugin-sdk/v2@v2.25.0/helper/schema/resource.go:837 +0xa85 github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(GRPCProviderServer).ApplyResourceChange(0xc000423ed8, {0xdd7840?, 0xc0004d0e70?}, 0xc00009a410) github.com/hashicorp/terraform-plugin-sdk/v2@v2.25.0/helper/schema/grpc_provider.go:1021 +0xe8d github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.(server).ApplyResourceChange(0xc0002d8320, {0xdd7840?, 0xc0004d0450?}, 0xc0001be230) github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov5/tf5server/server.go:818 +0x574 github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler({0xc6bc20?, 0xc0002d8320}, {0xdd7840, 0xc0004d0450}, 0xc0001be070, 0x0) github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:385 +0x170 google.golang.org/grpc.(Server).processUnaryRPC(0xc00025a1e0, {0xddb420, 0xc0004824e0}, 0xc0000fa000, 0xc0004317a0, 0x128f7a0, 0x0) google.golang.org/grpc@v1.53.0/server.go:1336 +0xd23 google.golang.org/grpc.(Server).handleStream(0xc00025a1e0, {0xddb420, 0xc0004824e0}, 0xc0000fa000, 0x0) google.golang.org/grpc@v1.53.0/server.go:1704 +0xa2f google.golang.org/grpc.(Server).serveStreams.func1.2() google.golang.org/grpc@v1.53.0/server.go:965 +0x98 created by google.golang.org/grpc.(Server).serveStreams.func1 google.golang.org/grpc@v1.53.0/server.go:963 +0x28a

Reckoner911 commented 3 months ago

main.tf:

terraform { required_providers { proxmox = { source = "telmate/proxmox" version = ">=1.0.0" } } required_version = ">= 0.14" }

provider "proxmox" { pm_api_url = " " pm_user = " " pm_api_token_id = " " pm_api_token_secret = " " pm_tls_insecure = true }

resource "proxmox_vm_qemu" "first-tf-vm" { name = "second-tf-vm" target_node = "virt" clone = "174-templ" storage = "vm_stor" cores = 2 memory = 2048 }

JacobHJensen commented 2 months ago

Hi Reckon911, did you ever find a solution for this issue? :-)

Reckoner911 commented 2 months ago

@WadDyORedDy , no, I'm newbie in tf, and I don't find any solution for this Is it my bad? Can you help me?

Reckoner911 commented 2 months ago

I don't understand why the plugin doesn't respond and I don't understand how it works under the hood. Usually I just get an error at the terraform plan stage, but here with terraform apply. The VM deployed

JacobHJensen commented 2 months ago

@Reckoner911 - I just checked issue 1074 and there is a solution.

Update your provider to use the latest version. You might need to fiddle a little with the proxmox_vm_qemu resource.

I'm still trying some stuff, and I'm stuck in a pxeboot-loop on the VM, but it's created and works with the newest version. Remember to use "terraform init -upgrade" when using a new version :-) I'll keep you updated if I get it to work - right now it seems like my network-block needs some looking into.

Reckoner911 commented 2 months ago

@WadDyORedDy Thanks so much, I'll gonna try do this in while workday

JacobHJensen commented 2 months ago

@Reckoner911 - I got it to work.

First of all, I'm using version 3.0.1-rc3.

My main.tf looks like this:

resource "proxmox_vm_qemu" "debian-template" {
    name = "terraform-vm-1"
    desc = "Terraform created VM from debian-template"
    vmid = "UNIQUE ID"
    target_node = "node03"

    agent = 0
    bootdisk = "scsi0"
    clone = "debian-template"
    cores = 1
    sockets = 1
    cpu = "host"
    memory = "2048"

    disks {
      scsi {
        scsi0 {
          disk {
            size = "32G"
            storage = "local-lvm"
          }
        }
      }
    }
}

I'm also using a provider.tf and credentials.auto.tfvars.

I've used issue #977 and #1074 as references. Also a fair bit of searching for specific issues - but now it works :-)

It seems like the disks {} block and bootdisk had some syntax-errors on my last couple of tries, and it would result in a PXE-boot loop (no PXE-boot on my side). But this works as intended and boots correctly from the scsi0-disk.

github-actions[bot] commented 4 weeks ago

This issue is stale because it has been open for 60 days with no activity. Please update the provider to the latest version and, in the issue persist, provide full configuration and debug logs

rmilville commented 3 weeks ago

@WadDyORedDy

I see that this is still open and encountered this problem today.

I got the same result either in terraform or opentofu : Terraform v1.9.8 + provider registry.terraform.io/telmate/proxmox v2.9.14 OpenTofu v1.8.4 + provider registry.terraform.io/telmate/proxmox v2.9.14

Trying to use : proxmox = { source = "Telmate/proxmox" version = ">= 3.0.0" }

gets me :

    │ Could not retrieve the list of available versions for provider telmate/proxmox: locked provider registry.terraform.io/telmate/proxmox 2.9.14 does not match
│ configured version constraint >= 3.0.0; must use terraform init -upgrade to allow selection of new versions

For reference, here is my main.tf :

terraform {
  required_providers {
    proxmox = {
      source = "Telmate/proxmox"
      version = ">= 3.0.0"
    }
  }
}

provider "proxmox" {
  pm_api_url = "https://192.168.1.6:8006/api2/json"
  pm_user    = "root@pam"
  pm_password = "**secret**"
  pm_tls_insecure = true
}

resource "proxmox_vm_qemu" "rocky9" {
    name = "terraform-vm-1"
    desc = "tf create from rocky template"
    vmid = "1000"
    target_node = "pve3"

    agent = 0
    clone = "test0"
    cores = 1
    sockets = 1
    cpu = "host"
    memory = "2048"

    disk {
      size = "10G"
      type = "virtio"
      storage = "local-lvm"
    }

  network {
    model  = "virtio"
    bridge = "vmbr0"
  }

  os_type = "cloud-init" 
}
rmilville commented 3 weeks ago

Ok I downloaded the 3.0.1-rc4 and used it locally. Seems like the problem will be indeed solved in the next version as I was able to use it without problem.