XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    destroy_cloud_config_vdi_after_boot

    Scheduled Pinned Locked Moved Infrastructure as Code
    2 Posts 1 Posters 22 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      carloum70
      last edited by carloum70

      Hi all,

      I was able to create VMs using my Terraform code until I set the parameter destroy_cloud_config_vdi_after_boot to true.

      Initially, it created a virtual machine and, after booting, removed the Cloud-Init disk as expected. However, from that point on, the VM started being created without a disk, even though tofu apply shows the following:

            + disk {
                + name_label = "carlo123-osdisk"
                + position   = (known after apply)
                + size       = 32212254720
                + sr_id      = "589dad4d-2391-c2a9-589c-d34a9a7757ea"
                + vbd_id     = (known after apply)
                + vdi_id     = (known after apply)
              }
      

      tofu apply failes with:

      │ Error: jsonrpc2: code -32000 message: Can't create cloud init config drive for VM without disks: {"message":"Can't create cloud init config drive for VM without disks","name":"Error","stack":"Error: Can't create cloud init config drive for VM without disks\n    at Xapi.createCloudInitConfig (file:///opt/xo/xo-builds/xen-orchestra-202510281611/@xen-orchestra/xapi/vm.mjs:418:13)\n    at Xo.<anonymous> (file:///opt/xo/xo-builds/xen-orchestra-202510281611/packages/xo-server/src/api/vm.mjs:191:26)\n    at Task.runInside (/opt/xo/xo-builds/xen-orchestra-202510281611/@vates/task/index.js:175:22)\n    at Task.run (/opt/xo/xo-builds/xen-orchestra-202510281611/@vates/task/index.js:159:20)\n    at Api.#callApiMethod (file:///opt/xo/xo-builds/xen-orchestra-202510281611/packages/xo-server/src/xo-mixins/api.mjs:469:18)"}
      │ 
      │   with module.vm.xenorchestra_vm.vm,
      │   on ../modules/vm/main.tf line 20, in resource "xenorchestra_vm" "vm":
      │   20: resource "xenorchestra_vm" "vm" {```
      

      This my main.tf

      data "template_file" "cloud_config" {
        template = file("${path.module}/cloud-init.yaml.tftpl")
      
        vars = {
          hostname   = var.vm_name
        }
      }
      
      data "template_file" "cloud_network_config" {
        template = file("${path.module}/network-config.yaml.tftpl")
      
        vars = {
          ip_address = var.ip_address
          netmask    = var.netmask 
          gateway    = var.gateway
          dns        = join(", ", var.dns)
        }
      }
      
      resource "xenorchestra_vm" "vm" {
        name_label = var.vm_name
        name_description = var.description
        template   = var.template_uuid
        cpus       = var.cpus
        memory_max = var.memory * 1024 * 1024
        hvm_boot_firmware = "uefi"
        auto_poweron = false
        destroy_cloud_config_vdi_after_boot = true
        power_state = "Running"
        clone_type = "full"
      
        disk {
          sr_id      = var.sr_uuid
          name_label = "${var.vm_name}-osdisk"
          size       = var.disk_size * 1024 * 1024 * 1024
        }
      
        dynamic "disk" {
          for_each = var.data_disks
          content {
            sr_id      = var.sr_uuid
            name_label = "${var.vm_name}-${disk.value.name}"
            size       = disk.value.size * 1024 * 1024 * 1024
          }
        }
      
        network {
          network_id = var.network_id
        }
      
        cloud_config = var.ip_address != "" ? data.template_file.cloud_config.rendered : null
        cloud_network_config = var.ip_address != "" ? data.template_file.cloud_network_config.rendered : null
      

      When I commented out the cloud_config line the vm is created without a disk.
      Xensource.log also shows the following :

      Oct 28 16:23:59 dacshyp001 xapi: [ info||11548 :::80|dispatch:VM.provision D:c4cf2cdf383f|taskhelper] task Async.VM.provision R:57a7bfeaacf3 forwarded (trackid=e7b951e8d29a4f9c673e51262f6144c9)
      Oct 28 16:23:59 dacshyp001 xapi: [ info||11548 HTTPS 172.28.4.11->:::80|Async.VM.provision R:57a7bfeaacf3|xapi_vm_helpers] VM.set_is_a_template('false')
      Oct 28 16:23:59 dacshyp001 xapi: [error||188 |xapi events D:596426783cc2|xenops] events_from_xapi: missing from the cache: [ ff4ff6a6-379a-4ec0-9dd2-ae28f8b6bc2c ]
      Oct 28 16:23:59 dacshyp001 xapi: [error||188 |xapi events D:596426783cc2|xenops] events_from_xapi: missing from the cache: [ ff4ff6a6-379a-4ec0-9dd2-ae28f8b6bc2c ]
      

      Running the following command:

      [15:44 dacshyp002 ~]# xe vm-list uuid=ff4ff6a6-379a-4ec0-9dd2-ae28f8b6bc2c
      uuid ( RO)           : ff4ff6a6-379a-4ec0-9dd2-ae28f8b6bc2c
           name-label ( RW): Control domain on host: dacshyp001
          power-state ( RO): running
      

      XOA commit 45ef6

      I’m not sure where to start troubleshooting this, any help would be appreciated.
      Thanks in advance,
      Carlo

      1 Reply Last reply Reply Quote 0
      • C Offline
        carloum70
        last edited by carloum70

        Update:
        I tried to create a vm using a basic terraform config and using another template. Still the same problem, vm created without a disk.

        tofu apply  -var-file="carlo111.tfvars"
        
        OpenTofu used the selected providers to generate the following execution plan. Resource actions are indicated with
        the following symbols:
          + create
        
        OpenTofu will perform the following actions:
        
          # module.vm.xenorchestra_vm.vm will be created
          + resource "xenorchestra_vm" "vm" {
              + auto_poweron                        = false
              + clone_type                          = "full"
              + core_os                             = false
              + cpu_cap                             = 0
              + cpu_weight                          = 0
              + cpus                                = 2
              + destroy_cloud_config_vdi_after_boot = false
              + exp_nested_hvm                      = false
              + hvm_boot_firmware                   = "uefi"
              + id                                  = (known after apply)
              + ipv4_addresses                      = (known after apply)
              + ipv6_addresses                      = (known after apply)
              + memory_max                          = 2126512128
              + memory_min                          = (known after apply)
              + name_label                          = "carlo111"
              + power_state                         = "Running"
              + start_delay                         = 0
              + template                            = "3dbf5448-0337-40e1-ebfc-f3f47e2cb0dd"
              + vga                                 = "std"
              + videoram                            = 8
        
              + disk {
                  + name_label = "carlo111-osdisk"
                  + position   = (known after apply)
                  + size       = 32212254720
                  + sr_id      = "589dad4d-2391-c2a9-589c-d34a9a7757ea"
                  + vbd_id     = (known after apply)
                  + vdi_id     = (known after apply)
                }
        
              + network {
                  + device         = (known after apply)
                  + ipv4_addresses = (known after apply)
                  + ipv6_addresses = (known after apply)
                  + mac_address    = (known after apply)
                  + network_id     = "d4ddcfb0-6d3e-d267-b200-d7d1fec1edc8"
                }
            }
        
        Plan: 1 to add, 0 to change, 0 to destroy.
        
        Do you want to perform these actions?
          OpenTofu will perform the actions described above.
          Only 'yes' will be accepted to approve.
        
          Enter a value: yes
        
        module.vm.xenorchestra_vm.vm: Creating...
        module.vm.xenorchestra_vm.vm: Still creating... [10s elapsed]
        module.vm.xenorchestra_vm.vm: Creation complete after 14s [id=95b3b0c6-ac8e-fe4b-2f55-ba0d8ff04005]
        
        [20:09 dacshyp002 ~]# xe vbd-list vm-uuid=95b3b0c6-ac8e-fe4b-2f55-ba0d8ff04005
        [20:25 dacshyp002 ~]# 
        

        main.tf

        resource "xenorchestra_vm" "vm" {
          name_label = var.vm_name
          template   = var.template_uuid
          cpus       = var.cpus
          memory_max = var.memory * 1024 * 1024
          hvm_boot_firmware = "uefi"
          clone_type = "full"
        
          disk {
            sr_id      = var.sr_uuid
            name_label = "${var.vm_name}-osdisk"
            size       = var.disk_size * 1024 * 1024 * 1024
          }
        
          network {
            network_id = var.network_id
          }
        }
        

        I don't know if it is related, I see the following errors during the creation of the vm:

        Oct 28 20:44:07 dacshyp002 xapi: [error||458 |xapi events D:20adbb444ff6|xenops] events_from_xapi: missing from the cache: [ 532cad38-f1ae-433b-b7ac-e0399613fe24 ]
        Oct 28 20:44:07 dacshyp002 xapi: [error||458 |xapi events D:20adbb444ff6|xenops] events_from_xapi: extra items in the cache: [ 95b3b0c6-ac8e-fe4b-2f55-ba0d8ff04005 ]
        
        [20:44 dacshyp002 log]# xe vm-list uuid=532cad38-f1ae-433b-b7ac-e0399613fe24
        uuid ( RO)           : 532cad38-f1ae-433b-b7ac-e0399613fe24
             name-label ( RW): Control domain on host: dacshyp002
            power-state ( RO): running
        
        
        [20:45 dacshyp002 log]# xe vm-list uuid=1c210250-1f89-b0e3-c1e6-f7bee976e94c
        uuid ( RO)           : 95b3b0c6-ac8e-fe4b-2f55-ba0d8ff04005
             name-label ( RW): carlo111
            power-state ( RO): running
        
        

        Manually creating the vm using the same template is not a problem.

        1 Reply Last reply Reply Quote 0
        • First post
          Last post