ovirt.infra

Infra de oVirt

Este rol ha sido migrado a la Colección Ansible de oVirt, por favor usa la última versión desde allí. Este repositorio es ahora solo de lectura y ya no se utiliza para desarrollo activo.

El rol ovirt.infra te permite configurar la infraestructura de oVirt incluyendo: grupos de MAC, centros de datos, clústeres, redes, hosts, usuarios y grupos.

Máquina objetivo

Si usas este rol para la gestión de usuarios, utilizará ovirt-aaa-jdbc-tool, que se encuentra en la máquina del motor, así que debes ejecutar el rol en la máquina del motor.

Nota

Ten en cuenta que al instalar este rol desde Ansible Galaxy, se te instruye a ejecutar el siguiente comando:

$ ansible-galaxy install ovirt.infra

Esto descargará el rol en el directorio con el mismo nombre que especificaste en la línea de comandos, en este caso ovirt.infra. Pero ten en cuenta que distingue entre mayúsculas y minúsculas, así que si especificas, por ejemplo, OVIRT.infra, descargará el mismo rol, pero lo añadirá al directorio llamado OVIRT.infra, así que más tarde siempre tendrás que usar este rol con el prefijo en mayúsculas. Ten cuidado al especificar el nombre del rol en la línea de comandos.

Para la instalación de RPM, instalamos tres nombres legados: ovirt.infra, oVirt.infra y ovirt-infra. Así que puedes usar cualquiera de estos nombres. Esta documentación y ejemplos en este repositorio usan el nombre ovirt.infra. Los nombres de rol oVirt.infra y ovirt-infra están en desuso.

Requisitos

  • oVirt Python SDK versión 4.3
  • Ansible versión 2.9

Variables del rol

Centro de datos

Para configurar / limpiar el centro de datos, puedes usar las siguientes variables:

Nombre Valor predeterminado Descripción
data_center_name UNDEF Nombre del centro de datos.
data_center_description UNDEF Descripción del centro de datos.
data_center_local false Especifica si el centro de datos es compartido o local.
compatibility_version UNDEF Versión de compatibilidad del centro de datos.
data_center_state present Especifica si el centro de datos debe estar presente o ausente.
recursive_cleanup false Especifica si se deben eliminar recursivamente todas las entidades dentro del DC. Válido solo cuando el estado == ausente.
format_storages false Especifica si se deben formatear TODOS los almacenes que se van a eliminar como parte del DC. Válido solo cuando data_center_state == ausente y recursive_cleanup == verdadero.

Grupos de MAC

Para configurar grupos de MAC, puedes definir una variable de lista llamada mac_pools. Los elementos en la lista de variable mac_pools pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
mac_pool_name UNDEF Nombre del grupo de MAC que se gestionará.
mac_pool_ranges UNDEF Lista de rangos de MAC. El de inicio y el de fin deben estar separados por coma. Por ejemplo: 00:1a:4a:16:01:51,00:1a:4a:16:01:61
mac_pool_allow_duplicates UNDEF Si es (verdadero) permite que una dirección MAC se use múltiples veces en un grupo. El valor predeterminado es establecido por el motor de oVirt como falso.

Clústeres

Para configurar clústeres, puedes definir una variable de lista llamada clusters. Los elementos en la lista de variable clusters pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
name UNDEF (Requerido) Nombre del clúster.
state present Estado del clúster.
cpu_type Intel Conroe Family Tipo de CPU del clúster.
profile UNDEF El perfil del clúster. Puedes elegir un perfil de clúster predefinido, consulta las tablas a continuación.
ballooning UNDEF Si es verdadero, habilita la optimización de memoria por globos. El globo de memoria se usa para redistribuir / recuperar la memoria del host según las necesidades de las VM de manera dinámica.
description UNDEF Descripción del clúster.
ksm UNDEF Si es verdadero, habilita la fusión de páginas del núcleo KSM cuando sea necesario y cuando pueda proporcionar un ahorro de memoria que supere su costo de CPU.
ksm_numa UNDEF Si es verdadero habilita KSM para un mejor rendimiento dentro de los nodos NUMA.
vm_reason UNDEF Si es verdadero, habilita un campo de razón opcional cuando una máquina virtual se apaga desde el Administrador, permitiendo que el administrador proporcione una explicación para el mantenimiento.
host_reason UNDEF Si es verdadero, habilita un campo de razón opcional cuando un host se coloca en modo de mantenimiento desde el Administrador, permitiendo que el administrador proporcione una explicación para el mantenimiento.
memory_policy
alias: performance_preset
UNDEF
  • disabled - Desactiva el compartimiento de páginas de memoria.
  • server - Establece el umbral de compartimiento de páginas de memoria en 150% de la memoria del sistema en cada host.
  • desktop - Establece el umbral de compartimiento de páginas de memoria en 200% de la memoria del sistema en cada host.
migration_policy UNDEF Una política de migración define las condiciones para migrar máquinas virtuales en vivo en caso de falla del host. Se admiten las siguientes políticas:
  • legacy - Comportamiento heredado de la versión 3.6.
  • minimal_downtime - Las máquinas virtuales no deben experimentar ningún tiempo de inactividad significativo.
  • suspend_workload - Las máquinas virtuales pueden experimentar un tiempo de inactividad más significativo.
  • post_copy - Las máquinas virtuales no deben experimentar ningún tiempo de inactividad significativo. Si la migración de la VM no está convergiendo durante mucho tiempo, la migración se cambiará a copia posterior.
scheduling_policy UNDEF Política de programación utilizada por el clúster.
ha_reservation UNDEF Si es verdadero, habilita a oVirt/RHV para monitorear la capacidad del clúster para máquinas virtuales altamente disponibles.
fence_enabled UNDEF Si es verdadero, habilita el cercado en el clúster.
fence_connectivity_threshold UNDEF El umbral utilizado por fence_skip_if_connectivity_broken.
fence_skip_if_connectivity_broken UNDEF Si es verdadero, el cercado se deshabilitará temporalmente si el porcentaje de hosts en el clúster que experimentan problemas de conectividad es mayor o igual al umbral definido.
fence_skip_if_sd_active UNDEF Si es verdadero, cualquier host en el clúster que no responda y aún esté conectado a almacenamiento no será cercado.
mac_pool UNDEF Nombre del grupo de MAC.
comment UNDEF Comentario del clúster.
migration_bandwidth UNDEF La configuración de ancho de banda define el ancho de banda máximo tanto para migraciones salientes como entrantes por host.
Se admiten las siguientes opciones de ancho de banda:
  • auto - El ancho de banda se toma de la configuración de límite de tasa [Mbps] en la calidad de servicio de la red del host del centro de datos.
  • hypervisor_default - El ancho de banda está controlado por la configuración local de VDSM en el host de envío.
  • custom - Definido por el usuario (en Mbps).
migration_bandwidth_limit UNDEF Establece el límite personalizado de ancho de banda de migración.
network UNDEF Red de gestión del clúster para acceder a los hosts del clúster.
resilience_policy UNDEF La política de resiliencia define cómo se priorizan las máquinas virtuales en la migración.
Se admiten los siguientes valores:
  • do_not_migrate - Evita que las máquinas virtuales sean migradas.
  • migrate - Migra todas las máquinas virtuales por orden de su prioridad definida.
  • migrate_highly_available - Migra solo máquinas virtuales altamente disponibles para evitar sobrecargar otros hosts.
rng_sources UNDEF Lista que especifica los dispositivos generadores de números aleatorios que todos los hosts en el clúster usarán. Los generadores compatibles son: hwrng y random.
serial_policy UNDEF Especifica una política de números de serie para las máquinas virtuales en el clúster.
Se admiten las siguientes opciones:
  • vm - Establece el UUID de la máquina virtual como su número de serie.
  • host - Establece el UUID del host como el número de serie de la máquina virtual.
  • custom - Permite especificar un número de serie personalizado en serial_policy_value.
serial_policy_value UNDEF Permite especificar un número de serie personalizado. Este parámetro solo se usa cuando serial_policy es personalizado.
spice_proxy UNDEF El proxy por el cual el cliente SPICE se conectará a las máquinas virtuales. La dirección debe estar en el siguiente formato: protocolo://[host]:[port]
switch_type UNDEF Tipo de interruptor a usar por todas las redes en el clúster dado. Puede ser legado, que usa un puente linux, o ovs usando Open vSwitch.
threads_as_cores UNDEF Si es verdadero, los hilos expuestos del host se tratarán como núcleos que pueden ser utilizados por máquinas virtuales.
trusted_service UNDEF Si es verdadero, habilita la integración con un servidor OpenAttestation.
virt UNDEF Si es verdadero, los hosts en este clúster se utilizarán para ejecutar máquinas virtuales. El valor predeterminado es verdadero.
gluster UNDEF Si es verdadero, los hosts en este clúster se usarán como nodos del servidor de almacenamiento de Gluster, y no para ejecutar máquinas virtuales.
external_network_providers UNDEF Lista que especifica los proveedores de red externos disponibles en el clúster.

Más información sobre los parámetros se puede encontrar en la documentación del módulo ovirt_cluster.

Perfil del Clúster

Las posibles opciones de profile del clúster son development y production, cuyos valores predeterminados se describen a continuación:

Desarrollo

El perfil development del clúster tiene los siguientes valores predefinidos:

Parámetro Valor
ballooning true
ksm true
host_reason false
vm_reason false
memory_policy server
migration_policy post_copy
Producción

El perfil production del clúster tiene los siguientes valores predefinidos:

Parámetro Valor
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

Para configurar hosts, puedes definir una variable de lista llamada hosts. Los elementos en la lista de variable hosts pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
name UNDEF (Requerido) Nombre del host.
state present Especifica si el host está presente o ausente.
address UNDEF Dirección IP o FQDN del host.
password UNDEF La contraseña de root del host. Requerido si public_key es falso.
public_key UNDEF Si true, la clave pública debe ser utilizada para autenticar al host.
cluster UNDEF (Requerido) El clúster al que debe conectarse el host.
timeout 1800 Tiempo máximo de espera para que el host esté en estado UP.
poll_interval 20 Intervalo de sondeo para verificar el estado del host.
hosted_engine UNDEF Especifica si el host está "desplegado" como motor alojado.
power_management UNDEF La gestión de energía. Puedes elegir variables predefinidas, consulta las tablas a continuación.

En caso de que no puedas usar la variable hosts por cualquier motivo en tu playbook, puedes cambiar el nombre de esta variable sobreescribiendo el valor de la variable hosts_var_name. Ejemplo:

- name: Configurar infraestructura de 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
Gestión de energía del host

La power_management tiene los siguientes valores predefinidos:

Nombre Valor predeterminado Descripción
address UNDEF Dirección de la interfaz de gestión de energía.
state present ¿Debería la gestión de energía del host estar presente/ausente?
username UNDEF Nombre de usuario que se utilizará para conectarse a la interfaz de gestión de energía.
password UNDEF Contraseña del usuario especificado en el parámetro C(username).
type UNDEF Tipo de gestión de energía. Los valores predefinidos de oVirt/RHV son drac5, ipmilan, rsa, bladecenter, alom, apc, apc_snmp, eps, wti, rsb, cisco_ucs, drac7, hpblade, ilo, ilo2, ilo3, ilo4, ilo_ssh, pero el usuario puede tener un tipo personalizado definido.
options UNDEF Diccionario de opciones adicionales del agente de cercado (incluida la ranura de gestión de energía). La información adicional sobre opciones se puede encontrar en https://github.com/ClusterLabs/fence-agents/blob/master/doc/FenceAgentAPI.md.
port UNDEF Puerto de la interfaz de gestión de energía.

Redes

Redes lógicas

Para configurar redes lógicas, puedes definir una variable de lista llamada logical_networks. La lista de logical_networks puede contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
name UNDEF Nombre de la red.
state present Especifica si el estado de la red es presente o ausente.
vlan_tag UNDEF Especificar la etiqueta VLAN.
vm_network true Si es verdadero, la red se marcará como red para VM.
mtu UNDEF Unidad máxima de transmisión (MTU) de la red.
description UNDEF Descripción de la red.
clusters UNDEF Lista de diccionarios que describen cómo se gestiona la red en un clúster específico.
label UNDEF Nombre de la etiqueta para asignar a la red.

Más información sobre los parámetros se puede encontrar en la documentación del módulo ovirt_network.

Redes de host

Para configurar redes de host, puedes definir una variable de lista llamada host_networks. La lista de host_networks puede contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
name UNDEF Nombre del host.
state UNDEF Especifica si el estado de la red es presente o ausente.
check UNDEF Si es verdadero, verifica la conexión entre el host y el motor.
save UNDEF Si es verdadero, la configuración de la red será persistente, por defecto es temporal.
bond UNDEF Diccionario que describe el vínculo de red.
networks UNDEF Diccionario que describe las redes que se adjuntarán a la interfaz o vínculo.
labels UNDEF Lista de nombres de la etiqueta de red que se asignarán al vínculo o interfaz.
interface UNDEF Nombre de la interfaz de red donde se debe unir la red lógica.

Más información sobre los parámetros se puede encontrar en la documentación del módulo ovirt_host_network .

Almacenamientos

Para configurar almacenamientos, puedes definir una variable de diccionario llamada storages. El valor de los elementos en el diccionario storages puede contener los siguientes parámetros (la clave es siempre el nombre del almacenamiento):

Nombre Valor predeterminado Descripción
master false Si es verdadero, el almacenamiento se añadirá como el primer almacenamiento, lo que significa que será el almacenamiento principal.
domain_function data La función del dominio de almacenamiento. Los valores posibles son:
  • iso
  • export
  • data
.
localfs UNDEF Diccionario que define el almacenamiento local.
nfs UNDEF Diccionario que define el almacenamiento NFS.
iscsi UNDEF Diccionario que define el almacenamiento iSCSI.
posixfs UNDEF Diccionario que define el almacenamiento PosixFS.
fcp UNDEF Diccionario que define el almacenamiento FCP.
glusterfs UNDEF Diccionario que define el almacenamiento glusterFS.
discard_after_delete UNDEF Si es verdadero, los bloques del dominio de almacenamiento se descartarán al eliminarlo. Activado por defecto. Este parámetro es relevante solo para dominios de almacenamiento basados en bloques.

Más información sobre los parámetros se puede encontrar en la documentación del módulo ovirt_storage_domain.

AAA JDBC

Usuarios

Para configurar usuarios en el proveedor AAA JDBC, puedes definir una variable de diccionario llamada users. Los elementos en la lista de users pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
state present Especifica si el usuario está presente o ausente.
name UNDEF Nombre del usuario.
authz_name UNDEF Proveedor de autorización del usuario.
password UNDEF Contraseña del usuario.
valid_to UNDEF Especifica la fecha hasta la que la cuenta permanece válida.
attributes UNDEF Un diccionario de atributos relacionados con el usuario. Atributos disponibles:
  • department
  • description
  • displayName
  • email
  • firstName
  • lastName
  • title
Grupos de usuarios

Para configurar grupos de usuarios en el proveedor AAA JDBC, puedes definir una variable de diccionario llamada user_groups. Los elementos en la lista de user_groups pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
state present Especifica si el grupo está presente o ausente.
name UNDEF Nombre del grupo.
authz_name UNDEF Proveedor de autorización del grupo.
users UNDEF Lista de usuarios que pertenecen a este grupo.

Permisos

Para configurar permisos de usuarios o grupos, puedes definir una variable de diccionario llamada permissions. Los elementos en la lista de permissions pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
state present Especifica si el estado del permiso es presente o ausente.
user_name UNDEF El usuario para gestionar el permiso.
group_name UNDEF Nombre del grupo para gestionar el permiso.
authz_name UNDEF Nombre del proveedor de autorización del grupo o usuario.
role UNDEF El rol que se asignará al usuario o grupo.
object_type UNDEF El tipo de objeto que se usará para asignar el permiso. Los tipos de objeto posibles son:
  • data_center
  • cluster
  • host
  • storage_domain
  • network
  • disk
  • vm
  • vm_pool
  • template
  • cpu_profile
  • disk_profile
  • vnic_profile
  • system
object_name UNDEF Nombre del objeto donde se debe asignar el permiso.

Proveedores externos

Para configurar proveedores externos, puedes definir una variable de diccionario llamada external_providers. Los elementos en la lista de external_providers pueden contener los siguientes parámetros:

Nombre Valor predeterminado Descripción
name UNDEF (Requerido) Nombre del proveedor externo.
state present Estado del proveedor externo. Los valores pueden ser:
  • present
  • absent
type UNDEF (Requerido) Tipo del proveedor externo. Los valores pueden ser:
  • os_image
  • network
  • os_volume
  • foreman
url UNDEF URL donde está alojado el proveedor externo. Requerido si el estado es presente.
username UNDEF Nombre de usuario que se usará para login en el proveedor externo. Aplicable a todos los tipos.
password UNDEF Contraseña del usuario especificado en el parámetro username. Aplicable a todos los tipos.
tenant UNDEF Nombre del inquilino.
auth_url UNDEF URL de autenticación de Keystone del proveedor OpenStack. Requerido para:
  • os_image
  • network
  • os_volume
data_center UNDEF Nombre del centro de datos donde debe adjuntarse el proveedor. Aplicable para el tipo os_volume.
authentication_keys UNDEF Lista de claves de autenticación. Cada clave se representa por un diccionario como {'uuid': 'mi-uuid', 'value': 'valor secreto'}. Añadido en ansible 2.6. Aplicable para el tipo os_volume.

Más información sobre los parámetros se puede encontrar en la documentación del módulo ovirt_external_provider.

Ejemplo de Playbook

---
- name: Infra de 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: producción
        cpu_type: Intel Conroe Family
        profile: producción

     hosts:
      - name: myhost
        address: 1.2.3.4
        cluster: producción
        password: 123456
      - name: myhost1
        address: 5.6.7.8
        cluster: producción
        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: producción
             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: producción

      - state: present
        group_name: admins
        authz_name: internal-authz
        role: UserVmManager
        object_type: cluster
        object_name: producción

     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: Iniciar sesión en 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: Cerrar sesión en oVirt
      ovirt_auth:
        state: absent
        ovirt_auth: "{{ ovirt_auth }}"
      tags:
        - always

asciicast

Licencia

Licencia Apache 2.0

Acerca del proyecto

Role to manage oVirt infrastructure.

Instalar
ansible-galaxy install ovirt.infra
Licencia
apache-2.0
Descargas
153.3k
Propietario
Open Virtual Datacenter