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 |
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
type | UNDEF (Requerido) | Tipo del proveedor externo. Los valores pueden ser:
|
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:
|
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
Licencia
Licencia Apache 2.0
ansible-galaxy install ovirt.infra