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

注意

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

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

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

要在 Playbook 中使用它,请指定:ovirt.ovirt.ovirt_template

ovirt.ovirt 1.0.0 中的新增功能

概要

  • 用于管理 oVirt/RHV 中的虚拟机模板的模块。

要求

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

  • python >= 2.7

  • ovirt-engine-sdk-python >= 4.4.0

参数

参数

注释

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

字符串

在 ovirt.ovirt 2.0.0 中添加

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

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

注意 - 自 oVirt 4.3 起支持。

选择

  • "i440fx_sea_bios"

  • "q35_ovmf"

  • "q35_sea_bios"

  • "q35_secure_boot"

boot_menu

布尔值

在 ovirt.ovirt 2.0.0 中添加

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

选择

  • false

  • true

clone_name

字符串

用于从存储域导入模板的名称。

如果未定义,将使用 name

clone_permissions

布尔值

如果为 True,则会将 VM 的权限(仅直接权限,而不是继承的权限)复制到创建的模板。

此参数仅在 statepresent 时使用。

选择

  • false

  • true

cloud_init

字典

包含使用云初始化进行类 Unix 虚拟机初始化的值的字典。

authorized_ssh_keys

字符串

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

custom_script

字符串

云初始化脚本,将在部署时在虚拟机上执行。

此脚本将附加到任何其他选项生成的云初始化脚本的末尾。

有关更多信息,请参阅云初始化用户数据文档。

字符串

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

dns_servers

字符串

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

host_name

字符串

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

nic_boot_protocol

字符串

设置虚拟机网络接口的启动协议。

选择

  • "none"

  • "dhcp"

  • "static"

nic_gateway

字符串

如果启动协议是静态的,则将此网关设置为虚拟机的网络接口。

nic_ip_address

字符串

如果启动协议是静态的,则将此 IP 地址设置为虚拟机的网络接口。

nic_name

字符串

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

nic_netmask

字符串

如果启动协议是静态的,则将此子网掩码设置为虚拟机的网络接口。

regenerate_ssh_keys

布尔值

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

选择

  • false

  • true

root_password

字符串

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

timezone

字符串

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

user_name

字符串

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

cloud_init_nics

列表 / 元素=字典

表示云初始化将要设置的网络接口的字典列表。

当用户需要通过云初始化设置多个网络接口时,可以使用此选项。

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

nic_boot_protocol

字符串

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

nic_gateway

字符串

如果启动协议是静态的,则将此网关设置为虚拟机的网络接口。

nic_ip_address

字符串

如果启动协议是静态的,则将此 IP 地址设置为虚拟机的网络接口。

nic_name

字符串

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

nic_netmask

字符串

如果启动协议是静态的,则将此子网掩码设置为虚拟机的网络接口。

集群

字符串

应在其中创建/导入模板的集群的名称。

集群映射

列表 / 元素=字典

state 为 registered 时,此映射器用于映射模板的 OVF 中的集群名称与此模板应注册到的目标集群。集群映射由以下字典描述:

目标名称

字符串

目标集群的名称。

源名称

字符串

源集群的名称。

CPU 配置文件

字符串

要设置到模板的 CPU 配置文件。

描述

字符串

模板的描述。

域映射

列表 / 元素=字典

state 为 registered 时,此映射器用于映射模板的 OVF 中的 aaa 域名与此模板应注册到的目标 aaa 域。aaa 域映射由以下字典描述:

目标名称

字符串

目标 aaa 域的名称。

源名称

字符串

源 aaa 域的名称。

独占

布尔值

state 为 *exported* 时,此参数指示是否应覆盖具有相同名称的现有模板。

选择

  • false

  • true

导出域

字符串

state 为 *exported* 或 *imported* 时,此参数指定导出存储域的名称。

获取嵌套

布尔值

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

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

选择

  • false ←(默认)

  • true

ID

字符串

要注册的模板的 ID。

镜像磁盘

别名:glance_image_disk_name

字符串

state 为 *imported* 并且使用 image_provider 时,此参数指定要作为模板导入的磁盘的名称。

镜像提供者

字符串

state 为 *imported* 时,此参数指定要使用的镜像提供者的名称。

IO 线程

整数

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

KVM

字典

用于连接到 kvm 并将模板导入到 oVirt 的值的字典。

克隆

字符串

指示是否应重新生成导入模板的标识符。

主机

字符串

将从中导入模板的主机名。

存储域

字符串

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

url

字符串

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

例如 qemu:///system。这是必需的参数。

内存

字符串

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

保证内存

字符串

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

memory_guaranteed 参数不能低于 memory 参数。

最大内存

字符串

模板内存的上限,可在此上限内执行内存热插拔。前缀使用 IEC 60027-2 标准(例如 1GiB,1024MiB)。

名称

字符串

要管理的模板的名称。

嵌套属性

列表 / 元素=字符串

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

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

网卡

列表 / 元素=字典

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

接口

字符串

网络接口的类型。

选择

  • "virtio" ←(默认)

  • "e1000"

  • "rtl8139"

MAC 地址

字符串

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

名称

字符串

网卡的名称。

配置文件名称

字符串

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

操作系统

字符串

模板的操作系统,例如 'rhel_8x64'。

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

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

轮询间隔

整数

模块等待多长时间(秒),直到发送另一个实体状态的轮询请求。

默认值: 3

角色映射

列表 / 元素=字典

state 为 registered 时,此映射器用于映射模板的 OVF 中的角色名称与此模板应注册到的目标角色。角色映射由以下字典描述:

目标名称

字符串

目标角色的名称。

源名称

字符串

源角色的名称。

封印

布尔值

“封印”是一种从文件系统中删除所有特定于计算机的配置的操作:这包括 SSH 密钥、UDEV 规则、MAC 地址、系统 ID、主机名等。如果为 *true*,则从该模板创建的后续虚拟机将避免配置继承。

此参数仅在 statepresent 时使用。

选择

  • false

  • true

启用智能卡

布尔值

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

选择

  • false

  • true

启用声卡

布尔值

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

选择

  • false

  • true

SSO

布尔值

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

选择

  • false

  • true

状态

字符串

模板应为 present/absent/exported/imported/registered。当 state 为 *registered* 且未注册模板的名称属于同一数据中心中已在引擎中注册的模板时,我们将无法注册未注册的模板。

选择

  • "present" ←(默认)

  • "absent"

  • "exported"

  • "imported"

  • "registered"

存储域

字符串

state 为 *imported* 时,此参数指定目标数据存储域的名称。当 state 为 *registered* 时,此参数指定未注册模板的数据存储域的名称。

sysprep

字典

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

Active Directory OU

字符串

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

custom_script

字符串

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

字符串

要设置到 Windows 虚拟机的域。

host_name

字符串

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

输入区域设置

字符串

Windows 虚拟机的输入区域设置。

组织名称

字符串

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

root_password

字符串

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

系统区域设置

字符串

Windows 虚拟机的系统区域设置。

timezone

字符串

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

UI 语言

字符串

Windows 虚拟机的 UI 语言。

user_name

字符串

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

Windows 许可证密钥

字符串

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

模板镜像磁盘名称

字符串

state 为 *imported* 并且使用了 image_provider 时,此参数指定导入磁盘的新名称,如果省略,则默认使用 *image_disk* 名称。此参数仅在从 Glance 域导入磁盘镜像时使用。

timeout

整数

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

默认值: 180

timezone

字符串

设置来宾硬件时钟的时区偏移量。

例如 Etc/GMT

USB 支持

布尔值

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

选择

  • false

  • true

版本

字典

name - 此版本的名称。

number - 此版本在模板版本层次结构中的索引。用于编辑子模板。

虚拟机

字符串

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

虚拟网卡配置文件映射

列表 / 元素=字典

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

源网络名称

字符串

源网络的网络名称。

源配置文件名称

字符串

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

目标配置文件 ID

字符串

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

等待

布尔值

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

选择

  • false

  • true ←(默认)

注释

注意

  • 为了使用此模块,您必须安装 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:

# Create template from vm
- ovirt.ovirt.ovirt_template:
    cluster: Default
    name: mytemplate
    vm: rhel7
    cpu_profile: Default
    description: Test

# Import template
- ovirt.ovirt.ovirt_template:
    state: imported
    name: mytemplate
    export_domain: myexport
    storage_domain: mystorage
    cluster: mycluster

# Remove template
- ovirt.ovirt.ovirt_template:
    state: absent
    name: mytemplate

# Change Template Name
- ovirt.ovirt.ovirt_template:
    id: 00000000-0000-0000-0000-000000000000
    name: "new_template_name"

# Register template
- ovirt.ovirt.ovirt_template:
    state: registered
    storage_domain: mystorage
    cluster: mycluster
    name: mytemplate

# Register template using id
- ovirt.ovirt.ovirt_template:
    state: registered
    storage_domain: mystorage
    cluster: mycluster
    id: 1111-1111-1111-1111

# Register template, allowing partial import
- ovirt.ovirt.ovirt_template:
    state: registered
    storage_domain: mystorage
    allow_partial_import: "True"
    cluster: mycluster
    id: 1111-1111-1111-1111

# Register template with vnic profile mappings
- ovirt.ovirt.ovirt_template:
    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

# Register template with mapping
- ovirt.ovirt.ovirt_template:
    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
    cluster_mappings:
      - source_name: cluster_A
        dest_name: cluster_B

# Import image from Glance s a template
- ovirt.ovirt.ovirt_template:
    state: imported
    name: mytemplate
    image_disk: "centos7"
    template_image_disk_name: centos7_from_glance
    image_provider: "glance_domain"
    storage_domain: mystorage
    cluster: mycluster

# Edit template subversion
- ovirt.ovirt.ovirt_template:
    cluster: mycluster
    name: mytemplate
    vm: rhel7
    version:
        number: 2
        name: subversion

# Create new template subversion
- ovirt.ovirt.ovirt_template:
    cluster: mycluster
    name: mytemplate
    vm: rhel7
    version:
        name: subversion

- name: Template with cloud init
  ovirt.ovirt.ovirt_template:
    name: mytemplate
    cluster: Default
    vm: rhel8
    memory: 1GiB
    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: Template with cloud init, with multiple network interfaces
  ovirt.ovirt.ovirt_template:
    name: mytemplate
    cluster: mycluster
    vm: rhel8
    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

- name: Template with timezone and nic
  ovirt.ovirt.ovirt_template:
    cluster: MyCluster
    name: mytemplate
    vm: rhel8
    timezone: America/Godthab
    memory_max: 2Gib
    nics:
      - name: nic1

- name: Template with sysprep
  ovirt.ovirt.ovirt_template:
    name: windows2012R2_AD
    cluster: Default
    vm: windows2012
    memory: 3GiB
    sysprep:
      host_name: windowsad.example.com
      user_name: Administrator
      root_password: SuperPassword123

- name: Import external ova template
  ovirt.ovirt.ovirt_template:
    cluster: mycluster
    name: mytemplate
    state: present
    timeout: 1800
    poll_interval: 30
    kvm:
      host: myhost
      url: ova:///tmp/test.ova
      storage_domain: mystorage

返回值

常见的返回值已在这里记录,以下是此模块独有的字段

描述

ID

字符串

被管理的模板的 ID

返回: 如果找到模板,则成功返回。

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

template

字典

所有模板属性的字典。模板属性可以在您的 oVirt/RHV 实例的以下 URL 找到:http://ovirt.github.io/ovirt-engine-api-model/master/#types/template

返回: 如果找到模板,则成功返回。

作者

  • Ondra Machacek (@machacekondra)

  • Martin Necas (@mnecas)