destroy_cloud_config_vdi_after_boot
-
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 : nullWhen 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): runningXOA commit 45ef6
I’m not sure where to start troubleshooting this, any help would be appreciated.
Thanks in advance,
Carlo -
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 ~]#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): runningManually creating the vm using the same template is not a problem.
-
Looking at the debug logging I can see the VDI and VBD are created but also removed during the setup of the VM. At this point I am not using cloud-init.
Creation of VDI and VBD:Oct 29 11:57:18 dacshyp002 xapi: [ info||67090 :::80|OpaqueRef:973e5688-b5a7-d197-cb55-95834b9abec6|mux] VDI.create dbg:OpaqueRef:973e5688-b5a7-d197-cb55-95834b9abec6 sr:589dad4d-2391-c2a9-589c-d34a9a7757ea vdi_info:{"sm_config":{},"sharable":false,"persistent":true,"physical_utilisation":0,"virtual_size":32212254720,"cbt_enabled":false,"read_only":false,"snapshot_of":"","snapshot_time":"19700101T00:00:00Z","is_a_snapshot":false,"metadata_of_pool":"","ty":"user","name_description":"","name_label":"debiancloud.vhd","content_id":"","vdi":""} Oct 29 11:57:18 dacshyp002 xapi: [debug||67090 HTTPS 172.28.4.10->:::80|VBD.create R:9725689f8e64|vbdops] VBD.create (device = 0; uuid = 2f57bc16-c913-ecd5-dce4-9261a7a0e6ed; ref = OpaqueRef:9549bde7-4ff8-dda0-703b-6efbf7397155)Some seconds later I see the following:
Oct 29 11:57:29 dacshyp002 xapi: [debug||68871 HTTPS 172.28.4.10->:::80|VBD.unplug R:b9f5584469dd|audit] VBD.unplug: VBD = '2f57bc16-c913-ecd5-dce4-9261a7a0e6ed' Oct 29 11:57:30 dacshyp002 xapi: [debug||67090 HTTPS 172.28.4.10->:::80|VBD.destroy R:cf37a355d7de|audit] VBD.destroy: VBD = '2f57bc16-c913-ecd5-dce4-9261a7a0e6ed' Oct 29 11:57:30 dacshyp002 xapi: [debug||67090 HTTPS 172.28.4.10->:::80|VBD.destroy R:cf37a355d7de|xapi_vbd_helpers] VBD.destroy (uuid = 2f57bc16-c913-ecd5-dce4-9261a7a0e6ed; ref = OpaqueRef:9549bde7-4ff8-dda0-703b-6efbf7397155)During the proces I checked all VDI's on my storage :
while true; do echo '==================================='; xe vdi-list sr-uuid=589dad4d-2391-c2a9-589c-d34a9a7757ea | grep name-label; sleep 1; done =================================== name-label ( RW): debiancloud.vhd name-label ( RW): dacsvm002-osdisk name-label ( RW): dacsvm03-dhcp01-osdisk name-label ( RW): dacsvm01-osdisk name-label ( RW): debiancloud.vhd name-label ( RW): debiancloud.vhd name-label ( RW): Debian Bookworm 12_uruva name-label ( RW): sebas-vm-disk name-label ( RW): dacsvm01-osdisk ... =================================== name-label ( RW): debiancloud.vhd name-label ( RW): dacsvm002-osdisk name-label ( RW): dacsvm03-dhcp01-osdisk name-label ( RW): dacsvm01-osdisk name-label ( RW): debiancloud.vhd name-label ( RW): debiancloud.vhd name-label ( RW): debiancloud.vhd name-label ( RW): Debian Bookworm 12_uruva name-label ( RW): sebas-vm-disk name-label ( RW): dacsvm01-osdisk ... =================================== name-label ( RW): debiancloud.vhd name-label ( RW): dacsvm002-osdisk name-label ( RW): dacsvm03-dhcp01-osdisk name-label ( RW): dacsvm01-osdisk name-label ( RW): debiancloud.vhd name-label ( RW): debiancloud.vhd name-label ( RW): Debian Bookworm 12_uruva name-label ( RW): sebas-vm-disk name-label ( RW): dacsvm01-osdisk -
Adding @Cyrille in the convo
-
I am still troubleshooting this case.
I created 2 new templates:
Template1 based on a default debian13-netinstall iso image
Template2: based on a debian cloud-init raw file: https://cdimage.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.rawRunning terraform with template1 runs fine. A vm is created with a disk.
Running terraform with template2 --> vm is created without a disk.
Manually creating a vm using template2 runs also fine.[21:33 dacshyp002 ~]# xe vbd-list vm-uuid=a6b4c48d-16c0-a333-fa90-c8b4b13d6c2a uuid ( RO) : 06552805-ddfa-7f80-a55e-9d878d626ad2 vm-uuid ( RO): a6b4c48d-16c0-a333-fa90-c8b4b13d6c2a vm-name-label ( RO): debian13-generic-cloud-tmpl vdi-uuid ( RO): 5c793847-b331-4f65-be71-9463c68e09c8 empty ( RO): false device ( RO): xvdbI can't reproduce the problem at my homelab. There are some differences at home:
- running xoa in a container (commit 82891)
- all vdi's are stored on local storage (at work we are using iscsi luns)
- just one xcp-ng server
-
Here is a full logging (xensource.log) the moment terraform creates the vm (carlo111).
I really hope someone can give me some clues. Because this is a showstopper.
Debug-terraform2.txt -
@Cyrille is back next week

-
Hi @carloum70
I'm back now — sorry for the delay.
If I understand correctly, this issue only occurs with a template created from a Debian 13 cloud-init raw file, is that right? I'm trying to understand how to reproduce the issue, as I've never seen it before. -
Can you share how you created the template?
And copy here the template object from xo-cli or the rest api:xo-cli list-objects type=VM-template id=<your_template_id>?
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login