KVM / Libvirt UpdateVm

KVM / Libvirt UpdateVm

Certified

Update KVM domain definition

Redefines a libvirt domain from rendered XML while preserving the existing UUID if missing in the template. Optionally restarts running or paused domains to apply changes when restart is true (default false).

yaml
type: io.kestra.plugin.kvm.UpdateVm
yaml
id: update_kvm_vm_ssh
namespace: kvmtest.ssh

tasks:
  - id: update_vm
    type: io.kestra.plugin.kvm.UpdateVm
    uri: qemu+ssh://root@167.99.104.163/system

    # This is the standard Libvirt XML format
    xmlDefinition: |
      <domain type='kvm'>
          <name>kestra-worker-nodes</name>
          <memory unit='MiB'>700</memory>
          <vcpu placement='static'>1</vcpu>
          <os>
            <type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
            <boot dev='hd'/>
          </os>
          <devices>
              <disk type='volume' device='disk'>
                  <driver name='qemu' type='qcow2'/>
                  <source pool='default' volume='kestra-worker-nodes-os.qcow2'/>
                  <target dev='vda' bus='virtio'/>
              </disk>

              <disk type='volume' device='disk'>
                  <driver name='qemu' type='qcow2'/>
                  <source pool='default' volume='kestra-worker-nodes-data.qcow2'/>
                  <target dev='vdb' bus='virtio'/>
              </disk>
          </devices>
      </domain>

    # If true, it attempts to stop and start the VM to apply the changes
    restart: true

  - id: log_result
    type: io.kestra.plugin.core.log.Log
    message: |
      VM Updated!
      Name: {{outputs.update_vm.name}}
      wasRestarted: {{ outputs.update_vm.wasRestarted }}
      State: {{ outputs.update_vm.state }}
Properties

Domain name

Domain to redefine; should match the in the XML.

Reference (ref) of the pluginDefaults to apply to this task.

Defaultfalse

Restart after update

If true, destroys then starts the domain when it is RUNNING or PAUSED to apply changes. Default false.

Libvirt URI

Domain XML

Libvirt domain XML template rendered with flow variables before defineXML; UUID is injected when absent.

VM Name

Redefined domain name.

VM State

Libvirt domain state after the update.

Restart performed

True when the domain was destroyed and started due to restart = true.