community.libvirt.virt_cloud_instance module – Provision new virtual machines from cloud images via libvirt
Note
This module is part of the community.libvirt collection (version 2.1.0).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.libvirt.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: community.libvirt.virt_cloud_instance.
New in community.libvirt 2.1.0
Synopsis
Create and customize virtual machines using pre-built cloud images with cloud-init support.
Cloud images can be retrieved from local files and remote URLs.
Supports automatic conversion and resizing of disk images.
Requirements
The below requirements are needed on the host that executes this module.
libvirt python bindings
lxml
python >= 2.6
qemu-img
virt-install
Parameters
Parameter |
Comments |
|---|---|
Request a non-native CPU architecture for the guest virtual machine. If omitted, the host CPU architecture will be used in the guest. |
|
Configure host audio output for the guest’s sound hardware. The dictionary contains key/value pairs that define individual audio backend properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple audio backends for the guest. |
|
Set the autostart flag for a domain. Choices:
|
|
Path or URL to the cloud image. Can be a local file path or a remote URL (http, https, ftp). The image will be automatically downloaded if a URL is provided. |
|
Tune block I/O policy for the domain process. |
|
Tune the weights for individual host block device used by the guest. Each dictionary entry contains a property name and its corresponding value. |
|
The overall I/O weight of the guest. The value should be in the range [100, 1000]. After kernel 2.6.39, the value could be in the range [10, 1000]. |
|
Set the boot device priority for post-install configuration. |
|
Additional options for boot configuration. The dictionary contains key/value pairs that define individual boot options. |
|
Attach a communication channel device to connect the guest and host machine. The dictionary contains key/value pairs that define individual channel properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple channel devices for the guest. |
|
Configure the clock for the guest. |
|
Set the clock offset, e.g. |
|
Tweak the guest’s timer settings on the specific hypervisor. Each dictionary entry contains a property name and its corresponding value. |
|
Pass cloud-init metadata to the VM. A cloud-init NoCloud ISO file is generated, and attached to the VM as a CDROM device. |
|
Specify a public key file to inject into the guest, providing ssh access to the default cloud-init user account. |
|
Disable cloud-init in the VM for subsequent boots. Without this, cloud-init may reset auth on each boot. Choices:
|
|
Specify a cloud-init meta-data file content. Can be provided as a YAML string (e.g., using the ‘|’ operator in Ansible) or as a dictionary structure. Note: String values are preferred as dictionary values cannot ensure order preservation. |
|
Specify a cloud-init network-config file content. Can be provided as a YAML string (e.g., using the ‘|’ operator in Ansible) or as a dictionary structure. Note: String values are preferred as dictionary values cannot ensure order preservation. |
|
A file used to set the VM root password from. |
|
Generate a new root password for the VM. Choices:
|
|
Specify a public key file to inject into the guest. |
|
Specify a cloud-init user-data file content. Can be provided as a YAML string (e.g., using the ‘|’ operator in Ansible) or as a dictionary structure. Note: String values are preferred as dictionary values cannot ensure order preservation. |
|
When wait_for_cloud_init_reboot=true, automatically inject a reboot instruction into the cloud-init user-data. If set to Only applies when wait_for_cloud_init_reboot=true. Choices:
|
|
Maximum time in seconds to wait for the cloud-init reboot cycle to complete. The timeout is checked at minute intervals, so the actual timeout may be up to 60 seconds longer. Only applies when wait_for_cloud_init_reboot=true. If the timeout is exceeded, the task will fail. Default: |
|
Connect a text console between the guest and host. The dictionary contains key/value pairs that define individual console properties. Common properties include type and target for different console types. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple console devices for the guest. |
|
Attach a controller device to the guest. The dictionary contains key/value pairs that define individual controller properties. Examples include type=usb,model=none to disable USB, or type=scsi,model=virtio-scsi for VirtIO SCSI. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple controller devices for the guest. |
|
Configure the CPU model and CPU features exposed to the guest. |
|
vCPU cache configuration for the guest. |
|
Specify the level of CPU cache. |
|
If set to If set to If set to Choices:
|
|
Fine-tune features provided by the selected CPU model. The value should be a dictionary where each key is a feature name and the value is a dictionary of options for that feature. An empty object |
|
The policy for the CPU feature. If set to If set to If set to If set to If set to Choices:
|
|
Specify how strictly the CPU model should be matched. Choices:
|
|
Specify whether this CPU model is migratable. Choices:
|
|
A valid CPU model or configuration mode for the guest. The possible values include: |
|
Additional options for CPU model configuration. |
|
Specify whether to automatically fall back to the closest model supported by the hypervisor if unable to use the exact CPU model. Choices:
|
|
Set the vendor id seen by the guest. It must be exactly 12 characters long. Typical possible values are AuthenticAMD and GenuineIntel. |
|
Configure NUMA topology for the guest. |
|
Specify a NUMA cell configuration. |
|
Describe memory side cache for memory proximity domains. Each dictionary entry contains a property name and its corresponding value. |
|
Specify the CPU or range of CPUs that are part of this node. |
|
Fine tune the discard feature for given NUMA node. Choices:
|
|
Define the distance between NUMA cells. |
|
Specify the distance value between sibling NUMA cells. Each dictionary entry contains a property name and its corresponding value. |
|
Specify the NUMA node ID. |
|
Specify the memory access mode for the NUMA node. This is valid only for hugepages-backed memory and nvdimm modules. Choices:
|
|
Specify the node memory size with a unit suffix. |
|
Describes the normalized memory read/write latency and bandwidth between Initiator Proximity Domains and Target Proximity Domains. |
|
Describe bandwidth between two memory nodes. Each dictionary entry contains a property name and its corresponding value. |
|
Describe latency between two memory nodes. Each dictionary entry contains a property name and its corresponding value. |
|
Specify CPU vendor requested by the guest The list of supported vendors can be found in cpu_map/*_vendors.xml. |
|
Tune CPU parameters for the guest. |
|
Specify the enforcement interval (unit: microseconds) for domain’s emulator threads. |
|
Specify the maximum allowed bandwidth (unit: microseconds) for domain’s emulator threads. |
|
Specify which host CPUs the domain emulator will be pinned to. |
|
Specify which physical CPUs to pin to. |
|
Specify the scheduler type for emulator thread. |
|
For real-time schedulers (fifo, rr), priority must be specified as well (and is ignored for non-real-time ones). The value range for the priority depends on the host kernel (usually 1-99). |
|
The scheduler type. Choices:
|
|
Specify the enforcement CFS scheduler interval (unit: microseconds) for the whole domain. |
|
Specify the maximum allowed bandwidth (unit: microseconds) within a period for the whole domain. |
|
Specify the enforcement interval (unit: microseconds) for domain’s IOThreads. |
|
Specify the maximum allowed bandwidth (unit: microseconds) for domain’s IOThreads. |
|
Specify which of host physical CPUs the IOThreads will be pinned to. |
|
Specify which physical CPUs to pin to. |
|
Specify the IOThread ID. |
|
Specify the scheduler type for particular IOThreads. |
|
Select which IOThreads this setting applies to. |
|
For real-time schedulers (fifo, rr), priority must be specified as well (and is ignored for non-real-time ones). The value range for the priority depends on the host kernel (usually 1-99). |
|
The scheduler type. Choices:
|
|
Specify the enforcement interval (unit: microseconds). The value should be in range [1000, 1000000]. A period with value 0 means no value. |
|
Specify the maximum allowed bandwidth (unit: microseconds). A domain with quota as any negative value indicates that the domain has infinite bandwidth for vCPU threads. |
|
Specify the proportional weighted share for the domain. |
|
Specify which of host’s physical CPUs the domain vCPU will be pinned to |
|
A comma-separated list of physical CPU numbers. |
|
Specify the vCPU ID. |
|
Specify the scheduler type for particular vCPUs. |
|
For real-time schedulers (fifo, rr), priority must be specified as well (and is ignored for non-real-time ones). The value range for the priority depends on the host kernel (usually 1-99). |
|
The scheduler type. Choices:
|
|
Select which vCPUs this setting applies to. |
|
Specify the storage devices for the guest. |
|
Specify the controller properties where the disk should be attached. The dictionary contains key/value pairs that define individual properties. |
|
Disk image format of backing_store. |
|
Path to a disk to use as the backing store for the newly created image. |
|
Override the default block device properties for the disk. The dictionary contains key/value pairs that define individual properties. |
|
Specify the boot order for the disk device. The dictionary contains key/value pairs that define individual properties. The per-device boot elements cannot be used together with general boot elements in the OS bootloader section. |
|
Disk bus type. (e.g. |
|
The cache mode to be used. Choices:
|
|
Specify the details of the hypervisor disk driver. The dictionary contains key/value pairs that define individual properties. |
|
Disk image format. For file volumes, this can be |
|
Override geometry settings for the disk. The dictionary contains key/value pairs that define individual properties. |
|
Specify additional per-device I/O tuning. The dictionary contains key/value pairs that define individual properties. |
|
The path to some storage media to use, existing or not. |
|
An existing libvirt storage pool name to create new storage on. |
|
Specify whether the disk needs rawio capability. Choices:
|
|
Set drive as readonly Choices:
|
|
Serial number of the emulated disk device. |
|
Specify whether unprivileged SG_IO commands are filtered for the disk. Only available when the device is ‘lun’. Choices:
|
|
Set drive as shareable Choices:
|
|
The size (in GiB) to use if creating new storage. |
|
Indicates the default behavior of the disk during disk snapshots. Choices:
|
|
Specify the details of the disk source. The dictionary contains key/value pairs that define individual properties. |
|
Whether to skip fully allocating newly created storage. Choices:
|
|
Specify the details of the target disk device. The dictionary contains key/value pairs that define individual properties. |
|
If Choices:
|
|
Additional options for transient disk configuration. |
|
If Choices:
|
|
An existing libvirt storage volume to use. |
|
Specify events values for the guest. |
|
Action to take when the guest crashes. Choices:
|
|
Action to take when when a lock manager loses resource locks. Choices:
|
|
Action to take when the guest requests a poweroff. Choices:
|
|
Action to take when the guest requests a reboot. Choices:
|
|
Enable or disable certain machine features. The value should be a dictionary where each key is a feature name and the value is a dictionary of options for that feature. An empty object Example: |
|
Specifies directories on the host to export to the guest. |
|
Specify the security mode for accessing the source. Choices:
|
|
Specify the controller properties where the filesystem should be attached. The dictionary contains key/value pairs that define individual properties. |
|
Tune the options for virtiofsd. The dictionary contains key/value pairs that define individual properties. |
|
The creation mode for directories when used with the |
|
Specify the details of the hypervisor driver. The dictionary contains key/value pairs that define individual properties. |
|
The creation mode for files when used with the |
|
Specify how to deal with a filesystem export containing more than one device. Choices:
|
|
Enable exporting filesystem as a readonly mount for guest. Choices:
|
|
The source directory configuration on the host. The dictionary contains key/value pairs that define individual properties. |
|
Maximum space available to this guest’s filesystem |
|
Maximum space available to this guest’s filesystem. |
|
The mount target configuration in the guest. The dictionary contains key/value pairs that define individual properties. |
|
Specify the source type of the filesystem. Choices:
|
|
Force deletion and recreation of existing disk files. When set to When set to This parameter only affects disk file creation, not VM definition. Use with Choices:
|
|
Force pull of the cloud image even if it already exists in the cache. Only used when Useful for updating cached images to their latest versions. Choices:
|
|
Configure the graphical display for the guest virtual machine. The dictionary contains key/value pairs that define individual properties. Common properties include type (e.g. |
|
Configure multiple graphics devices for the guest. |
|
Configure multiple host devices for the guest. |
|
Attach a physical host device to the guest. The dictionary contains key/value pairs that define individual host device properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Request the use of full virtualization. Choices:
|
|
Directory where downloaded cloud images will be cached. Only used when If not specified, the base image will be downloaded to the temporary directory and not be cached. |
|
If specified, the digest of the downloaded image will be calculated to verify the integrity of the downloaded image. Format: <algorithm>:<checksum|url>, e.g. sha256:D98291AC[…]B6DC7B97, sha256:http://example.com/path/sha256sum.txt. Only used when If you worry about portability, only the sha1 algorithm is available on all platforms and python versions. |
|
Attach an input device to the guest. Input device types include mouse, tablet, or keyboard. The dictionary contains key/value pairs that define individual input device properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple input devices for the guest. |
|
Add an IOMMU device to the guest. The dictionary contains key/value pairs that define individual IOMMU properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple IOMMU devices for the guest. |
|
Number of I/O threads to configure for the guest. |
|
Additional options for I/O threads configuration. |
|
Provide the capability to define the default event loop within hypervisor. |
|
Set upper boundary for number of worker threads for given IOThread. |
|
Set lower boundary for number of worker threads for given IOThread. |
|
Provide the capability to specifically define the IOThread ID’s for the domain. |
|
Define the IOThread ID. |
|
Set upper boundary for number of worker threads for given IOThread. |
|
Set lower boundary for number of worker threads for given IOThread. |
|
Configure domain keywrap settings used for S390 cryptographic key management operations. |
|
Specify the cipher settings for the domain. Each dictionary entry contains a property name and its corresponding value. |
|
Enable launch security for the guest. |
|
The C-bit (aka encryption bit) location in guest page table entry. |
|
The guest owners base64 encoded Diffie-Hellman (DH) key. |
|
The guest policy which must be maintained by the SEV firmware, e.g. |
|
The physical address bit reduction, e.g. |
|
The guest owners base64 encoded session blob defined in the SEV API spec. |
|
The type of launch security to enable, e.g. |
|
The machine type to emulate. This will typically not need to be specified for Xen or KVM. |
|
Attach a virtual memory balloon device to the guest. The dictionary contains key/value pairs that define individual memory balloon properties. Common properties include model (e.g. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple memory balloon devices for the guest. |
|
Memory to allocate for the guest, in MiB. |
|
Additional options for memory allocation. |
|
The actual allocation of memory for the guest, in MiB. |
|
The run time maximum memory allocation of the guest, in MiB. |
|
Additional options for maximum memory configuration. |
|
The number of slots available for adding memory to the guest. |
|
Specify how virtual memory pages are backed by host pages |
|
Configure memory access permissions. |
|
The access mode for the memory. Choices:
|
|
Configure memory allocation behavior. |
|
Specify when to allocate the memory by supplying either Choices:
|
|
The number of threads that hypervisor uses to allocate memory. |
|
If set to Choices:
|
|
Configure hugepage specifications for memory backing. |
|
Specify the guest’s NUMA nodes to certain hugepage sizes. |
|
Specify the hugepage size with a unit suffix. |
|
Use huge pages for memory backing. Choices:
|
|
Memory pages will be locked in host’s memory and will not be swapped out. Choices:
|
|
Instructs hypervisor to disable shared pages (memory merge, KSM) for this domain. Choices:
|
|
Configure the source of memory backing. |
|
The type of memory backing source. Choices:
|
|
Tune memory policy for the domain process. The dictionary contains key/value pairs that define individual memtune entries. |
|
Specify the metadata for the guest virtual machine. The dictionary contains key/value pairs that define individual metadata entries. e.g. Use |
|
Name of the new guest virtual machine instance. |
|
Connect the guest to the host network. Empty list |
|
Specify the controller properties where the filesystem should be attached. The dictionary contains key/value pairs that define individual properties. |
|
Specify the boot order for the network interface. The dictionary contains key/value pairs that define individual properties. The per-device boot elements cannot be used together with general boot elements in the OS bootloader section. |
|
Name of the host bridge device to connect to. |
|
Specify the details of the hypervisor driver. The dictionary contains key/value pairs that define individual properties. |
|
Configure network traffic filter rules for the guest. The dictionary contains key/value pairs that define individual properties. |
|
Name of the host device to connect to for type=hostdev. This uses PCI passthrough to directly assign a network device. |
|
MAC address configuration for the network interface. |
|
Fixed MAC address for the guest interface. If not specified, a suitable address will be randomly generated. |
|
Network device model configuration. |
|
Network device model as seen by the guest. Examples include |
|
Configure MTU settings for the virtual network link. - The dictionary contains key/value pairs that define individual properties. |
|
Name of the libvirt virtual network to connect to. |
|
Specify the interface ROM BIOS configuration The dictionary contains key/value pairs that define individual properties. |
|
Specify the details of the direct attached macvtap interface. The dictionary contains key/value pairs that define individual properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. Example: source={value: bond0, mode: bridge} |
|
Set state of the virtual network link The dictionary contains key/value pairs that define individual properties. |
|
Specify the details of the target network device. The dictionary contains key/value pairs that define individual properties. |
|
When set to Choices:
|
|
The type of network interface.
If omitted, the type of network interface is determined by other options. Choices:
|
|
Configure virtual port settings for the network interface. The dictionary contains key/value pairs that define individual properties. Common properties include type (e.g. |
|
Tune NUMA policy for the domain process. |
|
Specify memory allocation policies per each guest NUMA node. |
|
Specify the NUMA node ID. |
|
Can be one of Choices:
|
|
Specifies the NUMA nodes to allocate memory from. |
|
Specifies how to allocate memory for the domain process on a NUMA host. |
|
Can be one of Choices:
|
|
Specifies the NUMA nodes to allocate memory from. |
|
Indicate the memory placement mode for domain process. Choices:
|
|
Optimize the guest configuration for a specific operating system. |
|
Whether Choices:
|
|
The full URL style libosinfo ID. |
|
The OS name from libosinfo. (e.g. |
|
Whether Choices:
|
|
Attach a panic notifier device to the guest. The dictionary contains key/value pairs that define individual panic device properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple panic devices for the guest. |
|
Attach a parallel device to the guest. The dictionary contains key/value pairs that define individual parallel device properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple parallel devices for the guest. |
|
This guest should be a paravirtualized guest. Choices:
|
|
Configure the power management for the guest. |
|
Configure BIOS support for S4 (suspend-to-disk) ACPI sleep states. |
|
Enable or disable this sleep state. Choices:
|
|
Configure BIOS support for S3 (suspend-to-mem) ACPI sleep states. |
|
Enable or disable this sleep state. Choices:
|
|
Pass options directly to the qemu emulator. Only works for the libvirt qemu driver. |
|
Use with present to force the re-creation of an existing VM. Choices:
|
|
Add a redirected device for USB or other device redirection. The dictionary contains key/value pairs that define individual redirection properties. Common properties include bus=usb, type=tcp or type=spicevmc. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple redirected devices for the guest. |
|
Specify resource partitioning for the guest. The dictionary contains key/value pairs that define individual resource entries. Use |
|
Configure a virtual random number generator (RNG) device. The dictionary contains key/value pairs that define individual RNG properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple RNG devices for the guest. |
|
Configure domain seclabel domain settings. The dictionary contains key/value pairs that define individual security entries. |
|
Attach a serial device to the guest with various redirection options. The dictionary contains key/value pairs that define individual serial device properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple serial devices for the guest. |
|
Attach a shared memory device to the guest. The dictionary contains key/value pairs that define individual shared memory properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple shared memory devices for the guest. |
|
Configure a virtual smartcard device. The dictionary contains key/value pairs that define individual smartcard properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple smartcard devices for the guest. |
|
Attach a virtual audio device to the guest. The dictionary contains key/value pairs that define individual sound device properties. Common properties include model (e.g. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple sound devices for the guest. |
|
If set to Choices:
|
|
Configure sysinfo/SMBIOS values exposed to the VM OS. The dictionary contains key/value pairs that define individual sysinfo entries. Use |
|
Configure a virtual TPM (Trusted Platform Module) device. The dictionary contains key/value pairs that define individual TPM properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple TPM devices for the guest. |
|
Libvirt connection uri. Default: |
|
The password for HTTP basic authentication. Only used when |
|
The timeout in seconds for downloading the base image from a URL. Only used when Default: |
|
The username for HTTP basic authentication. Only used when |
|
Number of virtual cpus to configure for the guest. |
|
Additional options for virtual CPU configuration. |
|
number of clusters per die |
|
Number of cores per cluster |
|
A comma-separated list of physical CPU numbers that domain process and virtual CPUs can be pinned to by default. |
|
Specify whether fewer than the maximum number of virtual CPUs should be enabled. |
|
Number of dies per socket |
|
If specified, the guest will be able to hotplug up to MAX vcpus while the guest is running. |
|
Indicate the CPU placement mode for domain process Choices:
|
|
Total number of CPU sockets |
|
Number of threads per core |
|
Configure individual vCPU properties. Each dictionary entry contains a property name and its corresponding value. |
|
Specify what video device model will be attached to the guest. The dictionary contains key/value pairs that define individual video device properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple video devices for the guest. |
|
The hypervisor used to create the VM guest. Example choices are |
|
Configure a vsock host/guest interface. The dictionary contains key/value pairs that define individual vsock properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple vsock devices for the guest. |
|
If set to This requires that your cloud-init user-data includes a reboot action, or cloud_init_auto_reboot=true. Only applicable when Choices:
|
|
Attach a virtual hardware watchdog device to the guest. The dictionary contains key/value pairs that define individual watchdog properties. You can use the special attribute value to specify a primary value that appears before other properties in the command line. |
|
Configure multiple watchdog devices for the guest. |
Attributes
Attribute |
Support |
Description |
|---|---|---|
Support: full |
Supports check_mode. |
Notes
Note
The
virt-installcommand is provided by different packages on different distributions.On Debian/Ubuntu, install the
virtinstpackage.On RHEL/CentOS/Fedora and openSUSE, install the
virt-installpackage.When
wait_for_cloud_init_reboot=true, ensure your cloud-init user-data includes appropriate reboot commands or setcloud_init_auto_reboot=true.The
cloud_init_auto_rebootparameter automatically injects power_state.mode=reboot at the end of user-data when enabled.The module waits through the complete cloud-init process including any reboots specified in the user-data.
Use
cloud_init_reboot_timeoutto control the maximum wait time for complex cloud-init configurations.
See Also
See also
- community.libvirt.virt_install
More general VM installation module.
- virt-install Man Page
Ubuntu manpage of virt-install tool.
Examples
# Basic example: Create a VM from a local cloud image
- name: Create Ubuntu VM from local cloud image
community.libvirt.virt_cloud_instance:
name: ubuntu-vm-01
base_image: /srv/images/ubuntu-22.04-server-cloudimg-amd64.img
disks:
- path: /var/lib/libvirt/images/ubuntu-vm-01.qcow2
size: 20
format: qcow2
memory: 2048
vcpus: 2
networks:
- network: default
# Download cloud image from URL with checksum validation
- name: Create VM from remote Ubuntu cloud image
community.libvirt.virt_cloud_instance:
name: ubuntu-vm-02
base_image: https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img
image_cache_dir: /srv/cloud-images
image_checksum: sha256:https://cloud-images.ubuntu.com/releases/22.04/release/SHA256SUMS
disks:
- path: /var/lib/libvirt/images/ubuntu-vm-02.qcow2
size: 30
format: qcow2
memory: 4096
vcpus: 4
networks:
- network: default
# Advanced example with cloud-init configuration
- name: Create VM with cloud-init user data
community.libvirt.virt_cloud_instance:
name: web-server-01
base_image: /srv/images/ubuntu-22.04-server-cloudimg-amd64.img
disks:
- path: /var/lib/libvirt/images/web-server-01.qcow2
size: 50
format: qcow2
memory: 8192
vcpus: 4
networks:
- network: default
mac: 52:54:00:12:34:56
cloud_init:
user_data: |
#cloud-config
users:
- name: ansible
groups: sudo
shell: /bin/bash
sudo: 'ALL=(ALL) NOPASSWD:ALL'
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB... user@host
packages:
- nginx
- htop
- vim
runcmd:
- systemctl enable nginx
- systemctl start nginx
meta_data:
instance-id: web-server-01
local-hostname: web-server-01
# Force overwrite existing disk files
- name: Create VM and force overwrite existing disk
community.libvirt.virt_cloud_instance:
name: test-vm
base_image: /srv/images/ubuntu-22.04-server-cloudimg-amd64.img
force_disk: true
disks:
- path: /var/lib/libvirt/images/test-vm.qcow2
size: 20
format: qcow2
memory: 2048
vcpus: 2
networks:
- network: default
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
|---|---|
Path to the base cloud image file. This is the local path where the image was downloaded to (if URL was provided) or the original local path. Returned: success Sample: |