ovirt.ovirt.ovirt_vm 模块 – 用于管理 oVirt/RHV 中的虚拟机的模块

注意

此模块是 ovirt.ovirt 集合(版本 3.2.0)的一部分。

如果您使用的是 ansible 包,您可能已经安装了此集合。 它不包含在 ansible-core 中。 要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install ovirt.ovirt。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。

要在 playbook 中使用它,请指定:ovirt.ovirt.ovirt_vm

ovirt.ovirt 1.0.0 中的新增功能

概要

  • 此模块管理 oVirt/RHV 中虚拟机 (VM) 的整个生命周期。

  • 由于 VM 在 oVirt/RHV 中可以保持多种状态,请参阅注释以了解如何处理 VM 的状态。

要求

在执行此模块的主机上需要以下要求。

  • python >= 2.7

  • ovirt-engine-sdk-python >= 4.4.0

参数

参数

注释

affinity_group_mappings

列表 / 元素=字典

映射器,用于映射 VM 的 OVF 和虚拟机应注册到的目标亲和性之间的亲和性名称,当 state 为注册时相关。

affinity_label_mappings

列表 / 元素=字典

映射器,用于映射 VM 的 OVF 和虚拟机应注册到的目标标签之间的亲和性标签名称,当 state 为注册时相关。

allow_partial_import

布尔值

state 为注册时,指示是否允许部分注册虚拟机的布尔值。

选项

  • false

  • true

auth

字典 / 必需

包含创建到 oVirt 的 HTTP/HTTPS 连接所需值的字典

ca_file

字符串

一个包含受信任的 CA 证书的 PEM 文件。

服务器提供的证书将使用这些 CA 证书进行验证。

如果未设置 ca_file 参数,则使用系统范围的 CA 证书存储。

默认值由 OVIRT_CAFILE 环境变量设置。

compress

布尔值

标志指示是否对连接使用压缩。

选项

  • false

  • true ← (默认)

headers

字典

要添加到每个 API 调用的 HTTP 标头的字典。

hostname

字符串

一个包含服务器主机名的字符串,通常类似于 `server.example.com`。

默认值由 OVIRT_HOSTNAME 环境变量设置。

需要 urlhostname

insecure

布尔值

一个布尔标志,指示是否应检查服务器 TLS 证书和主机名。

选项

  • false ← (默认)

  • true

kerberos

布尔值

一个布尔标志,指示是否应使用 Kerberos 身份验证而不是默认的基本身份验证。

选项

  • false

  • true

password

字符串

用户的密码。

默认值由 OVIRT_PASSWORD 环境变量设置。

timeout

整数

等待响应的秒数。

token

字符串

用于代替使用用户名/密码登录的令牌。

默认值由 OVIRT_TOKEN 环境变量设置。

url

字符串

一个包含服务器 API URL 的字符串,通常类似于 `https://server.example.com/ovirt-engine/api`。

默认值由 OVIRT_URL 环境变量设置。

需要 urlhostname

username

字符串

用户名,类似于 admin@internal

默认值由 OVIRT_USERNAME 环境变量设置。

ballooning_enabled

布尔值

如果为 true,则使用内存气球。

内存气球是一种客户机设备,可用于根据 VM 的需求以动态方式重新分配/回收主机内存。这样就可以创建内存过度分配状态。

选项

  • false

  • true

bios_type

字符串

设置 BIOS 类型,对于某些操作系统和安全启动是必需的。

如果未传递任何值,则从群集设置默认值。

注意 - 自 oVirt 4.3 起支持。

选项

  • "i440fx_sea_bios"

  • "q35_ovmf"

  • "q35_sea_bios"

  • "q35_secure_boot"

boot_devices

列表 / 元素=字符串

应使用引导的引导设备列表。例如 [ cdrom, hd ]

默认值由 oVirt/RHV 引擎设置。

选项

  • "cdrom"

  • "hd"

  • "network"

boot_menu

布尔值

True 启用菜单以选择引导设备,False 禁用它。默认情况下由 oVirt/RHV 引擎选择。

选项

  • false

  • true

cd_iso

字符串

应附加到虚拟机的 ISO 存储域中的 ISO 文件。

如果您有多个同名的 ISO 磁盘,请使用磁盘 ID 指定应使用哪个磁盘或使用 storage_domain 来筛选磁盘。

如果传递空字符串,则 CD 将从 VM 中弹出。

如果与 state runningpresent 一起使用,并且虚拟机正在运行,则 CD 将附加到虚拟机。

如果与 state runningpresent 一起使用,并且虚拟机已关闭,则 CD 将持久附加到虚拟机。

克隆

布尔值

如果为 yes,则创建的虚拟机的磁盘将被克隆,并且独立于模板。

此参数仅在 staterunningpresent 且虚拟机之前不存在时使用。

选项

  • false ← (默认)

  • true

clone_permissions

布尔值

如果为 yes,则模板的权限(仅直接权限,而不是继承的权限)将复制到创建的虚拟机。

此参数仅在 staterunningpresent 且虚拟机之前不存在时使用。

选项

  • false ← (默认)

  • true

cloud_init

字典

使用 cloud init 进行类 Unix 虚拟机初始化的值字典。

authorized_ssh_keys

字符串

使用此 SSH 密钥登录虚拟机。

custom_script

字符串

在虚拟机部署时将在其上执行的 Cloud-init 脚本。

此脚本将附加到由任何其他选项生成的 cloud-init 脚本的末尾。

有关更多信息,请参阅 cloud-init User-Data 文档。

字符串

要在虚拟机上配置的 DNS 搜索域。

dns_servers

字符串

要在虚拟机上配置的 DNS 服务器,最多两个,用空格分隔。

host_name

字符串

要在虚拟机部署时设置的主机名。

nic_boot_protocol

字符串

设置虚拟机网络接口的引导协议。

选项

  • "none"

  • "dhcp"

  • "static"

nic_boot_protocol_v6

字符串

设置虚拟机网络接口的引导协议。

选项

  • "none"

  • "dhcp"

  • "static"

nic_gateway

字符串

如果引导协议为 static,则将此网关设置为虚拟机的网络接口。

nic_gateway_v6

字符串

如果引导协议为 static,则将此网关设置为虚拟机的网络接口。

对于 IPv6 地址,该值是 0-128 范围内的整数,表示子网前缀。

nic_ip_address

字符串

如果引导协议为 static,则将此 IP 地址设置为虚拟机的网络接口。

nic_ip_address_v6

字符串

如果引导协议为 static,则将此 IP 地址设置为虚拟机的网络接口。

nic_name

字符串

设置虚拟机网络接口的名称。

nic_netmask

字符串

如果引导协议为 static,则将此网络掩码设置为虚拟机的网络接口。

nic_netmask_v6

字符串

如果引导协议为 static,则将此网络掩码设置为虚拟机的网络接口。

regenerate_ssh_keys

布尔值

如果为 True,则将在虚拟机上重新生成 SSH 密钥。

选项

  • false

  • true

root_password

字符串

user_name 参数指定的用户设置的密码。

timezone

字符串

要在虚拟机部署时设置的时区。

user_name

字符串

在虚拟机部署时用于设置密码的用户名。

cloud_init_nics

列表 / 元素=字典

表示要通过 cloud init 设置的网络接口的字典列表。

当用户需要通过 cloud init 设置更多网络接口时,使用此选项。

如果一个网络接口足够,则用户应使用 cloud_init nic_* 参数。cloud_init nic_* 参数与 cloud_init_nics 参数合并。

nic_boot_protocol

字符串

设置虚拟机网络接口的引导协议。可以是 nonedhcpstatic 之一。

nic_boot_protocol_v6

字符串

设置虚拟机网络接口的引导协议。可以是 nonedhcpstatic 之一。

nic_gateway

字符串

如果引导协议为 static,则将此网关设置为虚拟机的网络接口。

nic_gateway_v6

字符串

如果引导协议为 static,则将此网关设置为虚拟机的网络接口。

对于 IPv6 地址,该值是 0-128 范围内的整数,表示子网前缀。

nic_ip_address

字符串

如果引导协议为 static,则将此 IP 地址设置为虚拟机的网络接口。

nic_ip_address_v6

字符串

如果引导协议为 static,则将此 IP 地址设置为虚拟机的网络接口。

nic_name

字符串

设置虚拟机网络接口的名称。

nic_netmask

字符串

如果引导协议为 static,则将此网络掩码设置为虚拟机的网络接口。

nic_netmask_v6

字符串

如果引导协议为 static,则将此网络掩码设置为虚拟机的网络接口。

cloud_init_persist

别名:sysprep_persist

布尔值

如果为 yes,则将保存虚拟机的 cloud_initsysprep 参数,并且虚拟机不会作为单次运行启动。

选项

  • false ← (默认)

  • true

cluster

字符串

应在其中创建虚拟机的集群名称。

如果创建虚拟机,则为必填项。

cluster_mappings

列表 / 元素=字典

state 为 registered 时,在虚拟机的 OVF 和应将此虚拟机注册到的目标集群之间映射集群名称的映射器。集群映射由以下字典描述

dest_name

字符串

目标集群的名称。

source_name

字符串

源集群的名称。

comment

字符串

虚拟机的注释。

cpu_cores

整数

虚拟机的虚拟 CPU 内核数。

默认值由 oVirt/RHV 引擎设置。

cpu_mode

字符串

虚拟机的 CPU 模式。它可以是以下几种之一:host_passthroughhost_modelcustom

对于 host_passthrough CPU 类型,您需要将 placement_policy 设置为 pinned

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

cpu_pinning

列表 / 元素=字典

将虚拟机 CPU 映射到主机 CPU 的 CPU 固定拓扑。

CPU 固定拓扑是字典列表,可以具有以下值

cpu

字符串

主机 CPU 的编号。

vcpu

字符串

虚拟机 CPU 的编号。

cpu_shares

整数

为此虚拟机设置 CPU 份额。

默认值由 oVirt/RHV 引擎设置。

cpu_sockets

整数

虚拟机的虚拟 CPU 插槽数。

默认值由 oVirt/RHV 引擎设置。

cpu_threads

整数

虚拟机的每个核心的线程数。

默认值由 oVirt/RHV 引擎设置。

custom_compatibility_version

字符串

使虚拟机可以自定义为其自己的兼容性版本。如果设置了“custom_compatibility_version”,它将覆盖此特定虚拟机的集群兼容性版本。

custom_emulated_machine

字符串

设置 custom_emulated_machine 属性的值。

custom_properties

列表 / 元素=字典

发送到 VDSM 以配置各种挂钩的属性。

自定义属性是字典列表,可以具有以下值

name

字符串

自定义属性的名称。例如:hugepagesvhostsap_agent 等。

regexp

字符串

要为自定义属性设置的正则表达式。

value

字符串

要为自定义属性设置的值。

delete_protected

布尔值

如果为 yes,则虚拟机将被设置为删除保护。

如果为 no,则虚拟机将不会被设置为删除保护。

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

选项

  • false

  • true

description

字符串

虚拟机的描述。

disk_format

字符串

指定磁盘的格式。

如果使用 cow 格式,则磁盘将创建为稀疏磁盘,因此将根据需要为卷分配空间,也称为精简配置

如果使用 raw 格式,则磁盘存储将立即分配,也称为预分配

请注意,此选项不是幂等的,因为它目前无法通过 API 更改磁盘格式。

仅当提供 templatestorage domain 时才考虑此参数。

选项

  • "cow" ← (默认)

  • "raw"

disks

列表 / 元素=字典

应附加到虚拟机的磁盘列表。磁盘由以下字典描述。

activate

布尔值

如果应激活磁盘,则为 True,默认情况下已激活。

注意 - 此参数仅在 staterunningpresent 时使用,并且只能附加磁盘。要更深入地管理虚拟机的磁盘,请改用 ovirt.ovirt.ovirt_disk 模块。

选项

  • false

  • true

bootable

布尔值

如果磁盘应可引导,则为 True,默认情况下不可引导。

选项

  • false

  • true

id

字符串

磁盘的 ID。需要 nameid

interface

字符串

磁盘的接口。

选项

  • "virtio" ← (默认)

  • "ide"

name

字符串

磁盘的名称。需要 nameid

domain_mappings

列表 / 元素=字典

state 为 registered 时,在虚拟机的 OVF 和应将此虚拟机注册到的目标 aaa 域之间映射 aaa 域名的映射器。aaa 域映射由以下字典描述

dest_name

字符串

目标 aaa 域的名称。

source_name

字符串

源 aaa 域的名称。

exclusive

布尔值

stateexported 时,此参数指示是否应覆盖具有相同名称的现有虚拟机。

选项

  • false

  • true

export_domain

字符串

stateexported 时,此参数指定导出存储域的名称。

export_ova

字典

用于将虚拟机导出为 OVA 的值字典。

directory

字符串

必须导出 OVA 的目录的名称。

filename

字符串

导出的 OVA 文件的名称。

host

字符串

必须导出 OVA 的目标主机的名称。

fetch_nested

布尔值

如果为 True,则模块将从 API 获取其他数据。

它将获取虚拟机磁盘、快照等的 ID。用户可以通过指定 nested_attributes 来配置获取嵌套实体的其他属性。

选项

  • false ← (默认)

  • true

force

布尔值

请查看概要以获取有关 force 参数的更详细描述,它在不同的情况下可能表现不同。

选项

  • false ← (默认)

  • true

force_migrate

布尔值

如果为 true,则当 placement_policy=user-migratable 时,虚拟机将迁移,但当 placement_policy=pinned 时不会迁移。

选项

  • false

  • true

graphical_console

字典

为虚拟机分配图形控制台。

copy_paste_enabled

布尔值

指示用户是否能够将内容从外部主机复制粘贴到图形控制台中。

此选项仅适用于 SPICE 控制台类型。

选项

  • false

  • true

disconnect_action

字符串

返回断开图形控制台(仅限 SPICE)时将发生的操作。选项为

none 不执行任何操作。

lock_screen 锁定当前活动的用户会话。

logout 注销当前活动的用户会话。

reboot 启动虚拟机正常重启。

shutdown 启动虚拟机正常关闭。

file_transfer_enabled

布尔值

指示用户是否能够将文件从外部主机拖放到图形控制台中。

此选项仅适用于 SPICE 控制台类型。

选项

  • false

  • true

headless_mode

布尔值

如果为 true,则禁用此虚拟机的图形控制台。

选项

  • false

  • true

keyboard_layout

字符串

此图形控制台要使用的键盘布局。

此选项仅适用于 VNC 控制台类型。

如果未启用键盘,则不会报告。

monitors

整数

为此图形控制台打开的监视器数量。

此选项仅适用于 SPICE 协议。

可能的值为 1、2 或 4。

protocol

列表 / 元素=字符串

图形协议,spicevnc 或两者兼有的列表。

high_availability

布尔值

如果为 yes,则虚拟机将被设置为高可用性。

如果为 no,则虚拟机将不会被设置为高可用性。

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

选项

  • false

  • true

high_availability_priority

整数

指示虚拟机在运行和迁移队列中的优先级。具有较高优先级的虚拟机将在具有较低优先级的虚拟机之前启动和迁移。该值是介于 0 和 100 之间的整数。值越高,优先级越高。

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

host

字符串

指定虚拟机应在其上运行的主机。默认情况下,主机由引擎调度程序选择。

此参数仅在 state 为 *running* 或 *present* 时使用。

host_devices

列表 / 元素=字典

单根 I/O 虚拟化 - 一种允许单个设备暴露多个可传递给虚拟机的端点的技术。

host_devices 是一个列表,其中包含具有设备名称和状态的字典。

id

字符串

要管理的虚拟机的 ID。

initrd_path

字符串

初始 RAM 磁盘的路径,用于与 kernel_path 选项指定的内核一起使用。

Ramdisk 镜像必须存储在 ISO 域或主机的存储上。

instance_type

字符串

虚拟机硬件配置的名称。

默认情况下不使用任何实例类型。

io_threads

整数

虚拟机使用的 IO 线程数。 *0* 表示禁用 IO 线程。

kernel_params

字符串

内核命令行参数(格式化为字符串),用于与 kernel_path 选项指定的内核一起使用。

kernel_params_persist

布尔值

如果为 *true*,则 kernel_paramsinitrd_pathkernel_path 将保留在虚拟机配置中,如果为 *False*,则仅用于运行一次。

选项

  • false ← (默认)

  • true

kernel_path

字符串

用于启动虚拟机的内核镜像的路径。

内核镜像必须存储在 ISO 域或主机的存储上。

kvm

字典

用于连接到 KVM 并将虚拟机导入 oVirt 的值字典。

drivers_iso

字符串

包含驱动程序的 ISO 名称,该驱动程序可在 *virt-v2v* 转换过程中使用。

name

字符串

KVM 虚拟机的名称。

password

字符串

用于对 KVM 进行身份验证的密码。

sparse

布尔值

指定生成的虚拟机的磁盘分配策略。 *true* 表示稀疏分配,*false* 表示预分配。

选项

  • false

  • true ← (默认)

storage_domain

字符串

指定转换后的磁盘的目标存储域。这是一个必需参数。

url

字符串

要传递给 *virt-v2v* 工具进行转换的 URL。

例如 *qemu:///system*。这是一个必需参数。

username

字符串

用于对 KVM 进行身份验证的用户名。

lease

字符串

此虚拟机租约所在的存储域的名称。传递空字符串以删除租约。

注意 - 自 oVirt 4.1 起受支持。

lun_mappings

列表 / 元素=字典

映射器,用于在虚拟机的 OVF 和此虚拟机应包含的目标 LUN 之间映射 LUN,当 state 为已注册时相关。 lun_mappings 由以下字典描述。

logical_unit_address

字符串

块存储主机的地址。

logical_unit_id

字符串

用于标识逻辑单元的逻辑单元号。

logical_unit_password)

字符串

用于连接到块存储主机的密码。

logical_unit_port

字符串

用于连接 LUN 磁盘的端口。

logical_unit_portal

字符串

用于连接 LUN 磁盘的门户。

logical_unit_target

字符串

位于 iSCSI 服务器上的 iSCSI 规范。

logical_unit_username

字符串

用于连接到块存储主机的用户名。

storage_type

字符串

LUN 所在的存储类型(iscsi 或 fcp)

memory

字符串

虚拟机的内存量。前缀使用 IEC 60027-2 标准(例如 1GiB,1024MiB)。

默认值由引擎设置。

memory_guaranteed

字符串

虚拟机的最小保证内存量。前缀使用 IEC 60027-2 标准(例如 1GiB,1024MiB)。

memory_guaranteed 参数不能低于 memory 参数。

默认值由引擎设置。

memory_max

字符串

虚拟机内存上限,内存热插拔可以执行到此上限。前缀使用 IEC 60027-2 标准(例如 1GiB,1024MiB)。

默认值由引擎设置。

migrate

布尔值

如果为 *true*,虚拟机将迁移到任何可用的主机。

选项

  • false

  • true

multi_queues_enabled

布尔值

在 ovirt.ovirt 1.7.0 中添加

如果为 `true`,则每个虚拟接口将根据可用的虚拟 CPU 获取最佳数量的队列。

选项

  • false

  • true

name

字符串

要管理的虚拟机的名称。

如果虚拟机不存在,则需要 name。否则可以使用 idname

nested_attributes

列表 / 元素=字符串

指定应从 API 获取的属性列表。

此参数仅在 fetch_nested 为 *true* 时适用。

next_run

布尔值

如果为 *true*,则更新不会立即应用于虚拟机,而仅在虚拟机重新启动时应用。

注意 - 如果虚拟机上有多个下次运行配置更改,则如果未传递此选项,则第一个更改可能会被还原。

选项

  • false

  • true

nics

列表 / 元素=字典

应附加到虚拟机的网卡列表。网卡由以下字典描述。

interface

字符串

网络接口的类型。

选项

  • "virtio" ← (默认)

  • "e1000"

  • "rtl8139"

mac_address

字符串

网络接口的自定义 MAC 地址,默认情况下从 MAC 池获取。

注意 - 此参数仅在 state 为 *running* 或 *present* 时使用,并且只能创建网卡。要更深入地管理虚拟机的网卡,请改用 ovirt.ovirt.ovirt_nic 模块。

name

字符串

网卡的名称。

profile_name

字符串

应附加网卡的配置文件名称。

numa_nodes

列表 / 元素=字典

要为此虚拟机设置的 vNUMA 节点列表,并将它们固定到指定主机的物理 NUMA 节点。

每个 vNUMA 节点由以下字典描述

cores

list / elements=integer / required

要包含在此 NUMA 节点中的虚拟机 CPU 核心索引列表。

index

string / required

此 NUMA 节点的索引。

memory

string / required

NUMA 节点的内存大小,单位为 MiB。

numa_node_pins

list / elements=integer

要将此虚拟 NUMA 节点固定到的物理 NUMA 节点索引列表。

numa_tune_mode

字符串

设置如何应用此虚拟机的 NUMA 节点内存分配(如果为此虚拟机设置了 NUMA 节点,则相关)。

它可以是以下值之一:*interleave*、*preferred* 或 *strict*。

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

选项

  • "interleave"

  • "preferred"

  • "strict"

operating_system

字符串

虚拟机的操作系统,例如 'rhel_8x64'。

默认值由 oVirt/RHV 引擎设置。

使用 ovirt.ovirt.ovirt_vm_os_info 模块获取当前列表。

placement_policy

字符串

虚拟机放置策略的配置。

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

放置策略可以是以下值之一

migratable

字符串

允许手动和自动迁移。

pinned

字符串

不允许迁移。

user_migratable

字符串

仅允许手动迁移。

placement_policy_hosts

列表 / 元素=字符串

主机名称列表。

poll_interval

整数

模块等待多少秒才发送另一个实体状态轮询请求。

默认值: 3

quota_id

字符串

用于磁盘的虚拟机配额 ID。默认情况下,配额由 oVirt/RHV 引擎选择。

reassign_bad_macs

布尔值

指示当 state 为已注册时是否重新分配错误的 MAC 地址的布尔值。

选项

  • false

  • true

rng_device

字符串

随机数生成器 (RNG)。您可以选择以下设备之一:*urandom*、*random* 或 *hwrng*。

要选择 *hwrng*,您必须首先在集群上启用它。

/dev/urandom 用于集群版本 >= 4.1,而 /dev/random 用于集群版本 <= 4.0

role_mappings

列表 / 元素=字典

映射器,用于在虚拟机的 OVF 和此虚拟机应注册到的目标角色之间映射角色名称,当 state 为已注册时相关。角色映射由以下字典描述

dest_name

字符串

目标角色的名称。

source_name

字符串

源角色的名称。

serial_console

布尔值

*True* 启用 VirtIO 串行控制台,*False* 禁用它。默认情况下由 oVirt/RHV 引擎选择。

选项

  • false

  • true

serial_policy

字符串

指定虚拟机的序列号策略。

支持以下选项。

vm - 将虚拟机的 UUID 设置为其序列号。

host - 将主机的 UUID 设置为虚拟机的序列号。

custom - 允许您在 serial_policy_value 中指定自定义序列号。

选项

  • "vm"

  • "host"

  • "custom"

serial_policy_value

字符串

允许您指定自定义序列号。

此参数仅在 serial_policy 为 *custom* 时使用。

smartcard_enabled

布尔值

如果为 *true*,则使用智能卡身份验证。

选项

  • false

  • true

snapshot_name

字符串

要从中克隆虚拟机的快照。

应存在具有指定描述的快照。

您必须使用此快照的虚拟机名称指定 snapshot_vm 参数。

snapshot_vm

字符串

要从中克隆虚拟机的源虚拟机。

虚拟机应具有由 snapshot 指定的快照。

如果指定了 snapshot_name,则需要 snapshot_vm

soundcard_enabled

布尔值

如果为 *true*,则将声卡添加到虚拟机。

选项

  • false

  • true

sso

布尔值

*True* 启用 Guest Agent 的单点登录,*False* 禁用它。默认情况下由 oVirt/RHV 引擎选择。

选项

  • false

  • true

state

字符串

虚拟机应为运行/停止/存在/不存在/暂停/下次运行/已注册/已导出/重新启动状态。当 state 为 *registered* 且未注册虚拟机的名称属于同一 DC 中已在引擎中注册的虚拟机时,我们将无法注册未注册的模板。

*present* 状态将创建/更新虚拟机,如果虚拟机已存在,则不会更改其状态。

*running* 状态将创建/更新虚拟机并启动它。

*next_run* 状态会更新虚拟机,如果虚拟机具有下次运行配置,则会重新启动。

请检查 *notes* 以获取更详细的状态描述。

*exported* 状态会将虚拟机导出到导出域或作为 OVA。

自 2.4 起支持 *registered*。

自 2.10 起支持 *reboot*,仅当虚拟机处于启动状态时才会重新启动。

*reset* 向虚拟机发送重置请求。

选项

  • "absent"

  • "next_run"

  • "present" ←(默认)

  • "registered"

  • "运行中"

  • "已停止"

  • "已暂停"

  • "已导出"

  • "重启"

  • "重置"

无状态

布尔值

如果为,虚拟机将被设置为无状态。

如果为,虚拟机将被取消设置为无状态。

如果未传递值,则默认值由 oVirt/RHV 引擎设置。

选项

  • false

  • true

storage_domain

字符串

应在其中创建所有模板磁盘的存储域的名称。

仅当提供了template时,才考虑此参数。

重要提示 - 此参数不是幂等的,如果虚拟机存在并且您指定了不同的存储域,磁盘将不会移动。

storage_error_resume_behaviour

字符串

在 ovirt.ovirt 3.2.0 中添加

如果此虚拟机上某些磁盘所在的存储变得无响应,则虚拟机会被暂停。

以下是可能的选项,当存储再次可用时,应该对虚拟机执行的操作。

选项

  • "auto_resume"

  • "kill"

  • "leave_paused"

sysprep

字典

使用 sysprep 初始化 Windows 虚拟机的字典值。

active_directory_ou

字符串

Active Directory 组织单元,用于用户登录。

custom_script

字符串

自定义 Sysprep 定义,格式为完整的无人值守安装应答文件。

domain

字符串

要设置给 Windows 虚拟机的域。

host_name

字符串

要在虚拟机部署时设置的主机名。

input_locale

字符串

Windows 虚拟机的输入本地化。

org_name

字符串

要设置给 Windows 虚拟机的组织名称。

root_password

字符串

要为 Windows 虚拟机用户名设置的密码。

system_locale

字符串

Windows 虚拟机的系统本地化。

timezone

字符串

要设置给 Windows 虚拟机的时区。

ui_language

字符串

Windows 虚拟机的 UI 语言。

user_name

字符串

用于设置 Windows 虚拟机密码的用户名。

windows_license_key

字符串

要设置给 Windows 虚拟机的许可证密钥。

template

字符串

应该用于创建虚拟机的模板的名称。

如果创建虚拟机,则为必填项。

如果未指定模板且虚拟机不存在,则将从空白模板创建虚拟机。

template_version

整数

要用于虚拟机的模板的版本号。

默认情况下,使用模板的最新可用版本。

ticket

布尔值

如果为true,则在vm字典中额外返回remote_vv_file,其中包含与远程查看器应用程序兼容的内容。 仅当staterunning时才有效。

选项

  • false

  • true

timeout

整数

模块应等待实例进入所需状态的时间(以秒为单位)。

默认值:180

timezone

字符串

设置客户机硬件时区的时区偏移量。

例如Etc/GMT

tpm_enabled

布尔值

在 ovirt.ovirt 3.2.0 中添加

如果为“true”,则将 TPM 设备添加到虚拟机。

选项

  • false

  • true

type

字符串

虚拟机的类型。

默认值由 oVirt/RHV 引擎设置。

自 Ansible 2.5 和 oVirt/RHV 4.2 起支持high_performance

选项

  • "desktop"

  • "server"

  • "high_performance"

usb_support

布尔值

True启用 USB 支持,False 禁用 USB 支持。默认情况下由 oVirt/RHV 引擎选择。

选项

  • false

  • true

use_latest_template_version

布尔值

指定在运行无状态虚拟机时是否应使用最新模板版本。

如果此参数设置为yes,则会创建无状态虚拟机。

选项

  • false

  • true

virtio_scsi_enabled

布尔值

在 ovirt.ovirt 1.7.0 中添加

启用 Virtio SCSI 支持。

选项

  • false

  • true

virtio_scsi_multi_queues

整数

在 ovirt.ovirt 1.7.0 中添加

Virtio-SCSI 控制器的队列数,可能的值:-1 - 表示将自动设置队列。 0 - 表示将禁用 Virtio SCSI 多队列。 >0 - 虚拟机要使用的 Virtio SCSI 队列数。

vmware

字典

用于连接到 VMware 并将虚拟机导入 oVirt 的值的字典。

drivers_iso

字符串

包含驱动程序的 ISO 名称,该驱动程序可在 *virt-v2v* 转换过程中使用。

password

字符串

用于针对 VMware 进行身份验证的密码。

sparse

布尔值

指定生成的虚拟机的磁盘分配策略。 *true* 表示稀疏分配,*false* 表示预分配。

选项

  • false

  • true ← (默认)

storage_domain

字符串

指定转换后的磁盘的目标存储域。这是一个必需参数。

url

字符串

要传递给 *virt-v2v* 工具进行转换的 URL。

例如vpx://wmware_user@vcenter-host/DataCenter/Cluster/esxi-host?no_verify=1

username

字符串

用于针对 VMware 进行身份验证的用户名。

vnic_profile_mappings

列表 / 元素=字典

state 注册时,将外部虚拟网卡配置文件映射到引擎中存在的配置文件的映射器。 vnic_profile 由以下字典描述

source_network_name

字符串

源网络的网络名称。

source_profile_name

字符串

与源网络相关的配置文件名称。

target_profile_id

字符串

要在引擎中映射到的目标配置文件 ID。

volatile

布尔值

在 ovirt.ovirt 2.2.0 中添加

指示即使在客户机启动重启的情况下,也将丢弃此运行配置。

选项

  • false

  • true

wait

布尔值

如果模块应等待实体进入所需状态,则为 yes

选项

  • false

  • true ← (默认)

wait_after_lease

整数

在 ovirt.ovirt 2.1.0 中添加

模块在租赁更改后应等待的秒数。

默认值:5

watchdog

字典

为虚拟机分配看门狗设备。

看门狗是一个字典,可以具有以下值

action

字符串

触发看门狗时要执行的看门狗操作。例如:noneresetpoweroffpausedump

model

字符串

看门狗设备的型号。例如:i6300esbdiag288null

xen

字典

用于连接到 XEN 并将虚拟机导入 oVirt 的值的字典。

drivers_iso

字符串

包含驱动程序的 ISO 名称,该驱动程序可在 *virt-v2v* 转换过程中使用。

sparse

布尔值

指定生成的虚拟机的磁盘分配策略。 *true* 表示稀疏分配,*false* 表示预分配。

选项

  • false

  • true ← (默认)

storage_domain

字符串

指定转换后的磁盘的目标存储域。这是一个必需参数。

url

字符串

要传递给 *virt-v2v* 工具进行转换的 URL。

例如 xen+ssh://root@zen.server。这是必需的参数。

备注

注意

  • 如果虚拟机在任何操作之前处于UNASSIGNEDUNKNOWN状态,则模块将失败。 如果虚拟机在任何操作之前处于IMAGE_LOCKED状态,我们将尝试等待虚拟机变为DOWN状态。 如果虚拟机在任何操作之前处于SAVING_STATE状态,我们将尝试等待虚拟机变为SUSPENDED状态。 如果虚拟机在任何操作之前处于POWERING_DOWN状态,我们将尝试等待虚拟机变为UPDOWN状态。 当虚拟机内部没有 ACPI 或客户机代理运行时,或者如果关闭操作失败,虚拟机可能会从POWERING_DOWN状态变为UP状态。 当用户指定UP state时,如果虚拟机处于MIGRATINGREBOOTINGPOWERING_UPRESTORING_STATEWAIT_FOR_LAUNCH状态,我们始终会等待虚拟机变为UP状态。 在其他状态下,我们在虚拟机上运行启动操作。 当用户指定stopped state时,如果用户传递的 force 参数设置为true,我们将强制停止任何状态的虚拟机。 如果用户未传递 force 参数,如果虚拟机处于MIGRATINGREBOOTINGPOWERING_UPRESTORING_STATEWAIT_FOR_LAUNCH状态,我们始终会等待虚拟机变为 UP 状态。 如果虚拟机处于PAUSEDSUSPENDED状态,我们将启动虚拟机。 然后,我们会正常关闭虚拟机。 当用户指定suspended state时,如果虚拟机处于MIGRATINGREBOOTINGPOWERING_UPRESTORING_STATEWAIT_FOR_LAUNCH状态,我们始终会等待虚拟机变为 UP 状态。 如果虚拟机处于PAUSEDDOWN状态,我们将启动虚拟机。 然后,我们暂停虚拟机。 当用户指定absent state时,我们将强制停止任何状态的虚拟机并将其删除。

  • 如果您更新了需要重启的虚拟机参数,则 oVirt 引擎始终会为虚拟机创建新的快照,并且 Ansible playbook 会将其报告为已更改。

  • 为了使用此模块,您必须安装 oVirt Python SDK。 要确保它以正确的版本安装,您可以创建以下任务:pip: name=ovirt-engine-sdk-python version=4.4.0

示例

# Examples don't contain auth parameter for simplicity,
# look at ovirt_auth module to see how to reuse authentication:

- name: Creates a new Virtual Machine from template named 'rhel7_template'
  ovirt.ovirt.ovirt_vm:
    state: present
    name: myvm
    template: rhel7_template
    cluster: mycluster

- name: Register VM
  ovirt.ovirt.ovirt_vm:
    state: registered
    storage_domain: mystorage
    cluster: mycluster
    name: myvm

- name: Register VM using id
  ovirt.ovirt.ovirt_vm:
    state: registered
    storage_domain: mystorage
    cluster: mycluster
    id: 1111-1111-1111-1111

- name: Register VM, allowing partial import
  ovirt.ovirt.ovirt_vm:
    state: registered
    storage_domain: mystorage
    allow_partial_import: "True"
    cluster: mycluster
    id: 1111-1111-1111-1111

- name: Register VM with vnic profile mappings and reassign bad macs
  ovirt.ovirt.ovirt_vm:
    state: registered
    storage_domain: mystorage
    cluster: mycluster
    id: 1111-1111-1111-1111
    vnic_profile_mappings:
    - source_network_name: mynetwork
      source_profile_name: mynetwork
      target_profile_id: 3333-3333-3333-3333
    - source_network_name: mynetwork2
      source_profile_name: mynetwork2
      target_profile_id: 4444-4444-4444-4444
    reassign_bad_macs: "True"

- name: Register VM with mappings
  ovirt.ovirt.ovirt_vm:
    state: registered
    storage_domain: mystorage
    cluster: mycluster
    id: 1111-1111-1111-1111
    role_mappings:
      - source_name: Role_A
        dest_name: Role_B
    domain_mappings:
      - source_name: Domain_A
        dest_name: Domain_B
    lun_mappings:
      - source_storage_type: iscsi
        source_logical_unit_id: 1IET_000d0001
        source_logical_unit_port: 3260
        source_logical_unit_portal: 1
        source_logical_unit_address: 10.34.63.203
        source_logical_unit_target: iqn.2016-08-09.brq.str-01:omachace
        dest_storage_type: iscsi
        dest_logical_unit_id: 1IET_000d0002
        dest_logical_unit_port: 3260
        dest_logical_unit_portal: 1
        dest_logical_unit_address: 10.34.63.204
        dest_logical_unit_target: iqn.2016-08-09.brq.str-02:omachace
    affinity_group_mappings:
      - source_name: Affinity_A
        dest_name: Affinity_B
    affinity_label_mappings:
      - source_name: Label_A
        dest_name: Label_B
    cluster_mappings:
      - source_name: cluster_A
        dest_name: cluster_B

- name: Creates a stateless VM which will always use latest template version
  ovirt.ovirt.ovirt_vm:
    name: myvm
    template: rhel7
    cluster: mycluster
    use_latest_template_version: true

# Creates a new server rhel7 Virtual Machine from Blank template
# on brq01 cluster with 2GiB memory and 2 vcpu cores/sockets
# and attach bootable disk with name rhel7_disk and attach virtio NIC
- ovirt.ovirt.ovirt_vm:
    state: present
    cluster: brq01
    name: myvm
    memory: 2GiB
    cpu_cores: 2
    cpu_sockets: 2
    cpu_shares: 1024
    type: server
    operating_system: rhel_7x64
    disks:
      - name: rhel7_disk
        bootable: True
    nics:
      - name: nic1

# Change VM Name
- ovirt.ovirt.ovirt_vm:
    id: 00000000-0000-0000-0000-000000000000
    name: "new_vm_name"

- name: Run VM with cloud init
  ovirt.ovirt.ovirt_vm:
    name: rhel7
    template: rhel7
    cluster: Default
    memory: 1GiB
    high_availability: true
    high_availability_priority: 50  # Available from Ansible 2.5
    cloud_init:
      dns_servers: '8.8.8.8 8.8.4.4'
      nic_boot_protocol: static
      nic_ip_address: 10.34.60.86
      nic_netmask: 255.255.252.0
      nic_gateway: 10.34.63.254
      nic_name: eth1
      host_name: example.com
      custom_script: |
        write_files:
         - content: |
             Hello, world!
           path: /tmp/greeting.txt
           permissions: '0644'
      user_name: root
      root_password: super_password

- name: Run VM with cloud init, with multiple network interfaces
  ovirt.ovirt.ovirt_vm:
    name: rhel7_4
    template: rhel7
    cluster: mycluster
    cloud_init_nics:
    - nic_name: eth0
      nic_boot_protocol: dhcp
    - nic_name: eth1
      nic_boot_protocol: static
      nic_ip_address: 10.34.60.86
      nic_netmask: 255.255.252.0
      nic_gateway: 10.34.63.254
    # IP version 6 parameters are supported since ansible 2.9
    - nic_name: eth2
      nic_boot_protocol_v6: static
      nic_ip_address_v6: '2620:52:0:2282:b898:1f69:6512:36c5'
      nic_gateway_v6: '2620:52:0:2282:b898:1f69:6512:36c9'
      nic_netmask_v6: '120'
    - nic_name: eth3
      nic_boot_protocol_v6: dhcp

- name: Run VM with sysprep
  ovirt.ovirt.ovirt_vm:
    name: windows2012R2_AD
    template: windows2012R2
    cluster: Default
    memory: 3GiB
    high_availability: true
    sysprep:
      host_name: windowsad.example.com
      user_name: Administrator
      root_password: SuperPassword123

- name: Migrate/Run VM to/on host named 'host1'
  ovirt.ovirt.ovirt_vm:
    state: running
    name: myvm
    host: host1

- name: Migrate/Run VM to/on host named 'host1' on cluster 'cluster1'
  ovirt.ovirt.ovirt_vm:
    state: running
    name: myvm
    host: host1
    cluster: cluster1

- name: Migrate VM to any available host
  ovirt.ovirt.ovirt_vm:
    state: running
    name: myvm
    migrate: true

- name: Change VMs CD
  ovirt.ovirt.ovirt_vm:
    name: myvm
    cd_iso: drivers.iso

- name: Eject VMs CD
  ovirt.ovirt.ovirt_vm:
    name: myvm
    cd_iso: ''

- name: Boot VM from CD
  ovirt.ovirt.ovirt_vm:
    name: myvm
    cd_iso: centos7_x64.iso
    boot_devices:
        - cdrom

- name: Stop vm
  ovirt.ovirt.ovirt_vm:
    state: stopped
    name: myvm

- name: Upgrade memory to already created VM
  ovirt.ovirt.ovirt_vm:
    name: myvm
    memory: 4GiB

- name: Hot plug memory to already created and running VM (VM won't be restarted)
  ovirt.ovirt.ovirt_vm:
    name: myvm
    memory: 4GiB

# Create/update a VM to run with two vNUMA nodes and pin them to physical NUMA nodes as follows:
# vnuma index 0-> numa index 0, vnuma index 1-> numa index 1
- name: Create a VM to run with two vNUMA nodes
  ovirt.ovirt.ovirt_vm:
    name: myvm
    cluster: mycluster
    numa_tune_mode: "interleave"
    numa_nodes:
    - index: 0
      cores: [0]
      memory: 20
      numa_node_pins: [0]
    - index: 1
      cores: [1]
      memory: 30
      numa_node_pins: [1]

- name: Update an existing VM to run without previously created vNUMA nodes (i.e. remove all vNUMA nodes+NUMA pinning setting)
  ovirt.ovirt.ovirt_vm:
    name: myvm
    cluster: mycluster
    state: "present"
    numa_tune_mode: "interleave"
    numa_nodes:
    - index: -1

# When change on the VM needs restart of the VM, use next_run state,
# The VM will be updated and rebooted if there are any changes.
# If present state would be used, VM won't be restarted.
- ovirt.ovirt.ovirt_vm:
    state: next_run
    name: myvm
    boot_devices:
      - network

- name: Import virtual machine from VMware
  ovirt.ovirt.ovirt_vm:
    state: stopped
    cluster: mycluster
    name: vmware_win10
    timeout: 1800
    poll_interval: 30
    vmware:
      url: vpx://[email protected]/Folder1/Cluster1/2.3.4.5?no_verify=1
      name: windows10
      storage_domain: mynfs
      username: user
      password: password

- name: Create vm from template and create all disks on specific storage domain
  ovirt.ovirt.ovirt_vm:
    name: vm_test
    cluster: mycluster
    template: mytemplate
    storage_domain: mynfs
    nics:
    - name: nic1

- name: Remove VM, if VM is running it will be stopped
  ovirt.ovirt.ovirt_vm:
    state: absent
    name: myvm

# Defining a specific quota for a VM:
# Since Ansible 2.5
- ovirt.ovirt.ovirt_quotas_info:
    data_center: Default
    name: myquota
  register: ovirt_quotas
- ovirt.ovirt.ovirt_vm:
    name: myvm
    sso: False
    boot_menu: True
    bios_type: q35_ovmf
    usb_support: True
    serial_console: True
    quota_id: "{{ ovirt_quotas[0]['id'] }}"

- name: Create a VM that has the console configured for both Spice and VNC
  ovirt.ovirt.ovirt_vm:
    name: myvm
    template: mytemplate
    cluster: mycluster
    graphical_console:
      protocol:
        - spice
        - vnc

# Execute remote viewer to VM
- block:
  - name: Create a ticket for console for a running VM
    ovirt.ovirt.ovirt_vm:
      name: myvm
      ticket: true
      state: running
    register: myvm

  - name: Save ticket to file
    ansible.builtin.copy:
      content: "{{ myvm.vm.remote_vv_file }}"
      dest: ~/vvfile.vv

  - name: Run remote viewer with file
    ansible.builtin.command: remote-viewer ~/vvfile.vv

# Default value of host_device state is present
- name: Attach host devices to virtual machine
  ovirt.ovirt.ovirt_vm:
    name: myvm
    host: myhost
    placement_policy: pinned
    host_devices:
      - name: pci_0000_00_06_0
      - name: pci_0000_00_07_0
        state: absent
      - name: pci_0000_00_08_0
        state: present

- name: Add placement policy with multiple hosts
  ovirt.ovirt.ovirt_vm:
    name: myvm
    placement_policy: migratable
    placement_policy_hosts:
      - host1
      - host2

- name: Export the VM as OVA
  ovirt.ovirt.ovirt_vm:
    name: myvm
    state: exported
    cluster: mycluster
    export_ova:
        host: myhost
        filename: myvm.ova
        directory: /tmp/

- name: Clone VM from snapshot
  ovirt.ovirt.ovirt_vm:
    snapshot_vm: myvm
    snapshot_name: myvm_snap
    name: myvm_clone
    state: present

- name: Import external ova VM
  ovirt.ovirt.ovirt_vm:
    cluster: mycluster
    name: myvm
    host: myhost
    timeout: 1800
    poll_interval: 30
    kvm:
      name: myvm
      url: ova:///path/myvm.ova
      storage_domain: mystorage

- name: Cpu pinning of 0#12_1#13_2#14_3#15
  ovirt.ovirt.ovirt_vm:
    state: present
    cluster: mycluster
    name: myvm
    cpu_pinning:
      - cpu: 12
        vcpu: 0
      - cpu: 13
        vcpu: 1
      - cpu: 14
        vcpu: 2
      - cpu: 15
        vcpu: 3

返回值

通用返回值记录在 此处,以下是此模块独有的字段

描述

id

字符串

被管理的虚拟机的 ID

返回值:如果找到虚拟机,则成功时返回。

示例:"7de90f31-222c-436c-a1ca-7e655bd5b60c"

vm

字典

所有虚拟机属性的字典。 可以在您的 oVirt/RHV 实例的以下 URL 上找到虚拟机属性:http://ovirt.github.io/ovirt-engine-api-model/master/#types/vm。 此外,当用户发送 ticket=true 时,此模块还将在 vm 字典中返回 remote_vv_file 参数,该参数包含用于打开虚拟机控制台的远程查看器兼容文件。 请注意,此文件包含敏感信息。

返回值:如果找到虚拟机,则成功时返回。

作者

  • Ondra Machacek (@machacekondra)

  • Martin Necas (@mnecas)