ovirt.infra
oVirt基础设施
此角色已迁移至 oVirt Ansible Collection,请从该处使用最新版本。此代码库现在为只读,不再用于主动开发。
ovirt.infra
角色使您能够设置oVirt基础设施,包括:MAC池、数据中心、集群、网络、主机、用户和组。
目标机器
如果您使用此角色进行用户管理,它将使用位于引擎机器上的ovirt-aaa-jdbc-tool
,因此您必须在引擎机器上执行此角色。
注意
请注意,当从Ansible Galaxy安装此角色时,您需要运行以下命令:
$ ansible-galaxy install ovirt.infra
这将下载角色到您在命令行上指定的相同名称的目录,在这种情况下是ovirt.infra
。请注意,它是区分大小写的,所以如果您指定例如OVIRT.infra
,它将下载相同的角色,但会将其添加到名为OVIRT.infra
的目录中,因此您之后必须始终使用带有大写前缀的角色。请小心在命令行上如何指定角色名称。
对于RPM安装,我们安装三个传统名称ovirt.infra
、oVirt.infra
和ovirt-infra
。因此,您可以使用这些名称中的任何一个。此文档及本代码库中的示例使用名称ovirt.infra
。oVirt.infra
和ovirt-infra
角色名称已被弃用。
要求
- oVirt Python SDK版本4.3
- Ansible版本2.9
角色变量
数据中心
设置/清理数据中心时,您可以使用以下变量:
名称 | 默认值 | 描述 |
---|---|---|
data_center_name | UNDEF | 数据中心的名称。 |
data_center_description | UNDEF | 数据中心的描述。 |
data_center_local | false | 指定数据中心是共享的还是本地的。 |
compatibility_version | UNDEF | 数据中心的兼容性版本。 |
data_center_state | present | 指定数据中心是否应存在或缺失。 |
recursive_cleanup | false | 指定是否递归删除数据中心内的所有实体。只有在状态 == absent时有效。 |
format_storages | false | 指定是否格式化作为数据中心一部分将被删除的所有存储。只有在data_center_state == absent和recursive_cleanup == true时有效。 |
MAC池
设置MAC池时,您可以定义名为mac_pools
的列表变量。mac_pools
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
mac_pool_name | UNDEF | 要管理的MAC池的名称。 |
mac_pool_ranges | UNDEF | MAC地址范围的列表。起始和结束地址应使用逗号分隔。例如:00:1a:4a:16:01:51,00:1a:4a:16:01:61 |
mac_pool_allow_duplicates | UNDEF | 如果为真,则允许在池中多次使用同一MAC地址。默认值为oVirt引擎设置为假。 |
集群
设置集群时,您可以定义名为clusters
的列表变量。clusters
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
name | UNDEF (必需) | 集群的名称。 |
state | present | 集群的状态。 |
cpu_type | Intel Conroe Family | 集群的CPU类型。 |
profile | UNDEF | 集群配置文件。您可以选择预定义的集群配置文件,见下表。 |
ballooning | UNDEF | 如果为真,启用内存气球优化。内存气球用于动态地重新分配/回收主机内存。 |
description | UNDEF | 集群的描述。 |
ksm | UNDEF | 如果为真,MoM将在必要时启用内核相同页面合并KSM,以便在节省内存好处大于CPU成本时使用。 |
ksm_numa | UNDEF | 如果为真,在NUMA节点内启用KSM以获得最佳性能。 |
vm_reason | UNDEF | 如果为真,当虚拟机从管理器关闭时启用可选原因字段,允许管理员提供维护的解释。 |
host_reason | UNDEF | 如果为真,当主机从管理器进入维护模式时启用可选原因字段,允许管理员提供维护的解释。 |
memory_policy 别名: performance_preset |
UNDEF |
|
migration_policy | UNDEF | 迁移策略定义在主机故障的情况下实时迁移虚拟机的条件。支持以下策略:
|
scheduling_policy | UNDEF | 集群使用的调度策略。 |
ha_reservation | UNDEF | 如果为真,启用oVirt/RHV监控集群容量,以便为高度可用的虚拟机预留资源。 |
fence_enabled | UNDEF | 如果为真,启用集群的围栏。 |
fence_connectivity_threshold | UNDEF | 用于fence_skip_if_connectivity_broken的阈值。 |
fence_skip_if_connectivity_broken | UNDEF | 如果为真,一旦集群中经历连接问题的主机百分比大于或等于定义的阈值,将暂时禁用围栏。 |
fence_skip_if_sd_active | UNDEF | 如果为真,集群中任何非响应且仍连接到存储的主机将不会被围栏。 |
mac_pool | UNDEF | MAC池名称。 |
comment | UNDEF | 集群的注释。 |
migration_bandwidth | UNDEF | 带宽设置定义每个主机的最大迁移带宽。 支持以下带宽选项:
|
migration_bandwidth_limit | UNDEF | 设置自定义迁移带宽限制。 |
network | UNDEF | 集群的管理网络,供访问集群主机。 |
resilience_policy | UNDEF | 韧性策略定义在迁移中虚拟机的优先级。 支持以下值:
|
rng_sources | UNDEF | 指定所有集群主机将使用的随机数生成器设备的列表。支持的生成器有:hwrng和random。 |
serial_policy | UNDEF | 指定集群中虚拟机的序列号策略。 支持以下选项:
|
serial_policy_value | UNDEF | 允许您指定自定义序列号。此参数仅在serial_policy为custom时使用。 |
spice_proxy | UNDEF | SPICE客户端将连接到虚拟机的代理。地址必须使用以下格式:protocol://[host]:[port] |
switch_type | UNDEF | 要由给定集群中的所有网络使用的交换机类型。可以是使用Linux桥接的传统模式或使用Open vSwitch的OVS模式。 |
threads_as_cores | UNDEF | 如果为真,主机的暴露线程将被视为可以被虚拟机利用的核心。 |
trusted_service | UNDEF | 如果为真,启用与OpenAttestation服务器的集成。 |
virt | UNDEF | 如果为真,该集群中的主机将用于运行虚拟机。默认值为真。 |
gluster | UNDEF | 如果为真,该集群中的主机将用作Gluster存储服务器节点,而不是用于运行虚拟机。 |
external_network_providers | UNDEF | 指定集群中可用的外部网络提供者的列表。 |
有关参数的更多信息,请参见ovirt_cluster模块文档。
集群配置文件
集群的可能profile
选项为development
和production
,其默认值如下所示:
开发
集群的development
配置文件具有以下预定义值:
参数 | 值 |
---|---|
ballooning | true |
ksm | true |
host_reason | false |
vm_reason | false |
memory_policy | server |
migration_policy | post_copy |
生产
集群的production
配置文件具有以下预定义值:
参数 | 值 |
---|---|
ballooning | false |
ksm | false |
host_reason | true |
vm_reason | true |
memory_policy | disabled |
migration_policy | suspend_workload |
scheduling_policy | evenly_distributed |
ha_reservation | true |
fence_enabled | true |
fence_skip_if_connectivity_broken | true |
fence_skip_if_sd_active | true |
主机
设置主机时,您可以定义名为hosts
的列表变量。hosts
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
name | UNDEF (必需) | 主机的名称。 |
state | present | 指定主机是present 还是absent 。 |
address | UNDEF | 主机的IP地址或FQDN。 |
password | UNDEF | 主机的根密码。如果 |
public_key | UNDEF | 如果为true,则应使用公钥进行主机身份验证。 |
cluster | UNDEF (必需) | 主机必须连接到的集群。 |
timeout | 1800 | 主机处于UP状态的最大等待时间。 |
poll_interval | 20 | 检查主机状态的轮询间隔。 |
hosted_engine | UNDEF | 指定主机是否'部署'为托管引擎。 |
power_management | UNDEF | 电源管理。您可以选择预定义的变量,见下表。 |
如果由于某种原因您无法在剧本中使用hosts
变量,您可以通过覆盖hosts_var_name
变量的值来更改此变量的名称。例如:
- name: 设置oVirt基础设施
hosts: engine
roles:
- role: ovirt.infra
vars:
hosts_var_name: ovirt_hosts
ovirt_hosts:
- name: host_0
state: present
address: 1.2.3.4
password: 123456
cluster: Default
主机电源管理
power_management
有以下预定义值:
名称 | 默认值 | 描述 |
---|---|---|
address | UNDEF | 电源管理接口的地址。 |
state | present | 主机电源管理是否应存在/缺失。 |
username | UNDEF | 用于连接到电源管理接口的用户名。 |
password | UNDEF | 在C(username)参数中指定的用户的密码。 |
type | UNDEF | 电源管理的类型。oVirt/RHV预定义值可为drac5、ipmilan、rsa、bladecenter、alom、apc、apc_snmp、eps、wti、rsb、cisco_ucs、drac7、hpblade、ilo、ilo2、ilo3、ilo4、ilo_ssh,但用户可以定义自定义类型。 |
options | UNDEF | 附加围栏代理选项的字典(包括电源管理插槽)。有关选项的更多信息,请参见https://github.com/ClusterLabs/fence-agents/blob/master/doc/FenceAgentAPI.md |
port | UNDEF | 电源管理接口端口。 |
网络
逻辑网络
设置逻辑网络时,您可以定义名为logical_networks
的列表变量。logical_networks
列表可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
name | UNDEF | 网络的名称。 |
state | present | 指定网络状态是present 还是absent 。 |
vlan_tag | UNDEF | 指定VLAN标签。 |
vm_network | True | 如果为真,则网络将标记为虚拟机网络。 |
mtu | UNDEF | 网络的最大传输单元(MTU)。 |
description | UNDEF | 网络的描述。 |
clusters | UNDEF | 描述在特定集群中如何管理网络的字典列表。 |
label | UNDEF | 分配给网络的标签的名称。 |
有关参数的更多信息,请参见ovirt_network模块文档。
主机网络
设置主机网络时,您可以定义名为host_networks
的列表变量。host_networks
列表可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
name | UNDEF | 主机的名称。 |
state | UNDEF | 指定网络状态是present 还是absent 。 |
check | UNDEF | 如果为真,则验证主机和引擎之间的连接。 |
save | UNDEF | 如果为真,网络配置将是持久的,默认是临时的。 |
bond | UNDEF | 描述网络绑定的字典。 |
networks | UNDEF | 描述将附加到接口或绑定的网络的字典。 |
labels | UNDEF | 要分配给绑定或接口的网络标签名称列表。 |
interface | UNDEF | 网络接口的名称,用于将逻辑网络附加到其中。 |
有关参数的更多信息,请参见ovirt_host_network模块文档。
存储
设置存储时,您可以定义名为storages
的字典变量。在storages
字典中,项的值可以包含以下参数(键始终是存储的名称):
名称 | 默认值 | 描述 |
---|---|---|
master | false | 如果为真,存储将作为第一个存储添加,这意味着它将是主存储。 |
domain_function | data | 存储域的功能。可能的值有:
|
localfs | UNDEF | 描述本地存储的字典。 |
nfs | UNDEF | 描述NFS存储的字典。 |
iscsi | UNDEF | 描述iSCSI存储的字典。 |
posixfs | UNDEF | 描述PosixFS存储的字典。 |
fcp | UNDEF | 描述FCP存储的字典。 |
glusterfs | UNDEF | 描述glusterFS存储的字典。 |
discard_after_delete | UNDEF | 如果为真,存储域块将在删除时被丢弃。默认情况下启用。此参数仅适用于基于块的存储域。 |
有关参数的更多信息,请参见ovirt_storage_domain模块文档。
AAA JDBC
用户
要在AAA JDBC提供者中设置用户,您可以定义名为users
的字典变量。users
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
state | present | 指定用户是present 还是absent 。 |
name | UNDEF | 用户的名称。 |
authz_name | UNDEF | 用户的授权提供者。 |
password | UNDEF | 用户的密码。 |
valid_to | UNDEF | 指定帐户有效的日期。 |
attributes | UNDEF | 与用户相关的属性字典。可用属性:
|
用户组
要在AAA JDBC提供者中设置用户组,您可以定义名为user_groups
的字典变量。user_groups
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
state | present | 指定组是present 还是absent 。 |
name | UNDEF | 组的名称。 |
authz_name | UNDEF | 组的授权提供者。 |
users | UNDEF | 属于此组的用户列表。 |
权限
要设置用户或组的权限,可以定义名为permissions
的字典变量。permissions
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
state | present | 指定权限状态是present 还是absent 。 |
user_name | UNDEF | 要管理权限的用户。 |
group_name | UNDEF | 要管理权限的组的名称。 |
authz_name | UNDEF | 组或用户的授权提供者的名称。 |
role | UNDEF | 要分配给用户或组的角色。 |
object_type | UNDEF | 应用于授权的对象类型。可能的对象类型有:
|
object_name | UNDEF | 应用于权限的对象的名称。 |
外部提供者
要设置外部提供者,您可以定义名为external_providers
的字典变量。external_providers
列表中的项可以包含以下参数:
名称 | 默认值 | 描述 |
---|---|---|
name | UNDEF (必需) | 外部提供者的名称。 |
state | present | 外部提供者的状态。值可以是:
|
type | UNDEF (必需) | 外部提供者的类型。值可以是:
|
url | UNDEF | 外部提供者托管的URL。若状态为present则必需。 |
username | UNDEF | 用于登录到外部提供者的用户名。适用于所有类型。 |
password | UNDEF | 指定在用户名参数中指定的用户的密码。适用于所有类型。 |
tenant | UNDEF | 标识租户的名称。 |
auth_url | UNDEF | OpenStack提供者的Keystone身份验证URL。对于以下类型必需:
|
data_center | UNDEF | 外部提供者应连接的数据中心的名称。适用于类型os_volume。 |
authentication_keys | UNDEF | 身份验证密钥列表。每个密钥由类似{'uuid': 'my-uuid', 'value': 'secret value'}的字典表示。从ansible 2.6开始适用。适用于类型os_volume。 |
有关参数的更多信息,请参见ovirt_external_provider模块文档。
示例剧本
---
- name: oVirt基础设施
hosts: localhost
connection: local
gather_facts: false
vars:
engine_fqdn: ovirt-engine.example.com
engine_user: admin@internal
engine_password: 123456
engine_cafile: /etc/pki/ovirt-engine/ca.pem
data_center_name: mydatacenter
compatibility_version: 4.1
mac_pools:
- mac_pool_name: "Default"
mac_pool_ranges:
- "00:1a:4a:16:01:51,00:1a:4a:16:01:61"
clusters:
- name: production
cpu_type: Intel Conroe Family
profile: production
hosts:
- name: myhost
address: 1.2.3.4
cluster: production
password: 123456
- name: myhost1
address: 5.6.7.8
cluster: production
password: 123456
power_management:
address: 9.8.7.6
username: root
password: password
type: ipmilan
options:
myoption1: x
myoption2: y
slot: myslot
storages:
mynfsstorage:
master: true
state: present
nfs:
address: 10.11.12.13
path: /the_path
myiscsistorage:
state: present
iscsi:
target: iqn.2014-07.org.ovirt:storage
port: 3260
address: 100.101.102.103
username: username
password: password
lun_id: 3600140551fcc8348ea74a99b6760fbb4
mytemplates:
domain_function: export
nfs:
address: 100.101.102.104
path: /exports/nfs/exported
myisostorage:
domain_function: iso
nfs:
address: 100.101.102.105
path: /exports/nfs/iso
logical_networks:
- name: mynetwork
clusters:
- name: production
assigned: yes
required: no
display: no
migration: yes
gluster: no
host_networks:
- name: myhost1
check: true
save: true
bond:
name: bond0
mode: 2
interfaces:
- eth2
- eth3
networks:
- name: mynetwork
boot_protocol: dhcp
users:
- name: john.doe
authz_name: internal-authz
password: 123456
valid_to: "2018-01-01 00:00:00Z"
- name: joe.doe
authz_name: internal-authz
password: 123456
valid_to: "2018-01-01 00:00:00Z"
user_groups:
- name: admins
authz_name: internal-authz
users:
- john.doe
- joe.doe
permissions:
- state: present
user_name: john.doe
authz_name: internal-authz
role: UserROle
object_type: cluster
object_name: production
- state: present
group_name: admins
authz_name: internal-authz
role: UserVmManager
object_type: cluster
object_name: production
external_providers:
- name: myglance
type: os_image
state: present
url: http://externalprovider.example.com:9292
username: admin
password: secret
tenant: admin
auth_url: http://externalprovider.example.com:35357/v2.0/
pre_tasks:
- name: 登录到oVirt
ovirt_auth:
hostname: "{{ engine_fqdn }}"
username: "{{ engine_user }}"
password: "{{ engine_password }}"
ca_file: "{{ engine_cafile | default(omit) }}"
insecure: "{{ engine_insecure | default(true) }}"
tags:
- always
roles:
- ovirt.infra
post_tasks:
- name: 从oVirt登出
ovirt_auth:
state: absent
ovirt_auth: "{{ ovirt_auth }}"
tags:
- always
许可证
Apache许可证2.0