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.infraoVirt.infraovirt-infra。因此,您可以使用这些名称中的任何一个。此文档及本代码库中的示例使用名称ovirt.infraoVirt.infraovirt-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
  • disabled - 禁用内存页面共享。
  • server - 将内存页面共享阈值设置为每个主机系统内存的150%。
  • desktop - 将内存页面共享阈值设置为每个主机系统内存的200%。
migration_policy UNDEF 迁移策略定义在主机故障的情况下实时迁移虚拟机的条件。支持以下策略:
  • legacy - 3.6版本的传统行为。
  • minimal_downtime - 虚拟机不应经历任何重要的停机时间。
  • suspend_workload - 虚拟机可能会经历更显著的停机时间。
  • post_copy - 虚拟机不应经历任何重要的停机时间。如果VM迁移长时间没有收敛,迁移将切换到后复制。
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 带宽设置定义每个主机的最大迁移带宽。
支持以下带宽选项:
  • auto - 从数据中心主机网络QoS中的速率限制[Mbps]设置中复制带宽。
  • hypervisor_default - 带宽由发送主机上的本地VDSM设置控制。
  • custom - 由用户指定(以Mbps为单位)。
migration_bandwidth_limit UNDEF 设置自定义迁移带宽限制。
network UNDEF 集群的管理网络,供访问集群主机。
resilience_policy UNDEF 韧性策略定义在迁移中虚拟机的优先级。
支持以下值:
  • do_not_migrate - 防止虚拟机被迁移。
  • migrate - 按照定义的优先级迁移所有虚拟机。
  • migrate_highly_available - 仅迁移高度可用的虚拟机,以防止其他主机负载过重。
rng_sources UNDEF 指定所有集群主机将使用的随机数生成器设备的列表。支持的生成器有:hwrngrandom
serial_policy UNDEF 指定集群中虚拟机的序列号策略。
支持以下选项:
  • vm - 将虚拟机的UUID设置为其序列号。
  • host - 将主机的UUID设置为虚拟机的序列号。
  • custom - 允许您在serial_policy_value中指定自定义序列号。
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选项为developmentproduction,其默认值如下所示:

开发

集群的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为false则必需。
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 存储域的功能。可能的值有:
  • iso
  • export
  • 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 与用户相关的属性字典。可用属性:
  • department
  • description
  • displayName
  • email
  • firstName
  • lasName
  • title
用户组

要在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 应用于授权的对象类型。可能的对象类型有:
  • data_center
  • cluster
  • host
  • storage_domain
  • network
  • disk
  • vm
  • vm_pool
  • template
  • cpu_profile
  • disk_profile
  • vnic_profile
  • system
object_name UNDEF 应用于权限的对象的名称。

外部提供者

要设置外部提供者,您可以定义名为external_providers的字典变量。external_providers列表中的项可以包含以下参数:

名称 默认值 描述
name UNDEF (必需) 外部提供者的名称。
state present 外部提供者的状态。值可以是:
  • present
  • absent
所有
type UNDEF (必需) 外部提供者的类型。值可以是:
  • os_image
  • network
  • os_volume
  • foreman
url UNDEF 外部提供者托管的URL。若状态为present则必需。
username UNDEF 用于登录到外部提供者的用户名。适用于所有类型。
password UNDEF 指定在用户名参数中指定的用户的密码。适用于所有类型。
tenant UNDEF 标识租户的名称。
auth_url UNDEF OpenStack提供者的Keystone身份验证URL。对于以下类型必需:
  • os_image
  • network
  • os_volume
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

关于项目

Role to manage oVirt infrastructure.

安装
ansible-galaxy install ovirt.infra
许可证
apache-2.0
下载
153.3k
拥有者
Open Virtual Datacenter