ovirt.vm-infra
Infraestructura de Máquinas Virtuales de oVirt
Este rol ha sido migrado a oVirt Ansible Collection, por favor utiliza la última versión de allí. Este repositorio ahora es de solo lectura y ya no se usa para el desarrollo activo.
El rol ovirt.vm-infra
gestiona la infraestructura de máquinas virtuales en oVirt. Este rol también crea un inventario de las máquinas virtuales creadas y define si wait_for_ip
está configurado como true
y el estado de la máquina virtual es running
. Todas las máquinas virtuales definidas son parte del grupo de inventario ovirt_vm
. Además, el rol crea grupos ovirt_tag_{tag_name}
si hay etiquetas asignadas a una máquina virtual y coloca todas las máquinas virtuales con esa etiqueta en ese grupo de inventario.
Considera la siguiente estructura de variables:
vms:
- name: myvm1
tag: mytag1
profile: myprofile
- name: myvm2
tag: mytag2
profile: myprofile
El rol creará el grupo de inventario ovirt_vm
con ambas máquinas virtuales - myvm1
y myvm2
. El rol también crea el grupo de inventario ovirt_tag_mytag1
con la máquina virtual myvm1
y el grupo de inventario ovirt_tag_mytag2
con la máquina virtual myvm2
.
Nota
Por favor, ten en cuenta que al instalar este rol desde Ansible Galaxy se te indica que ejecutes el siguiente comando:
$ ansible-galaxy install ovirt.vm-infra
Esto descargará el rol en el directorio con el mismo nombre que especificaste en la línea de comandos, en este caso ovirt.vm-infra
. Pero ten en cuenta que la distinción es sensible a mayúsculas y minúsculas, así que si especificas, por ejemplo, OVIRT.vm-infra
, se descargará el mismo rol, pero se añadirá a un directorio llamado OVIRT.vm-infra
. En tal caso, tendrás que referenciar este rol con el prefijo en mayúsculas en el futuro. Por lo tanto, ten cuidado con cómo specifies el nombre del rol en la línea de comandos.
En cuanto a la instalación de RPM, soportamos tres nombres antiguos: ovirt.vm-infra
, oVirt.vm-infra
y ovirt-vm-infra
. Puedes usar cualquiera de esos nombres. Esta documentación y los ejemplos en este repositorio utilizan el nombre ovirt.vm-infra
. Los nombres de rol oVirt.vm-infra
y ovirt-vm-infra
están en desuso.
Requisitos
- Versión de Ansible 2.9 o superior
- Versión de Python SDK 4.3 o superior
- python3-jmespath o python2-jmespath
Limitaciones
- No soporta el Modo de Verificación de Ansible (Ejecutar en Seco).
Variables del Rol
Nombre | Valor por defecto | |
---|---|---|
vms | UNDEF | Lista de diccionarios con especificaciones de máquinas virtuales. |
affinity_groups | UNDEF | Lista de diccionarios con especificaciones de grupos de afinidad. |
wait_for_ip | false | Si es verdadero, el playbook esperará la dirección IP de la máquina virtual reportada por el agente invitado. |
wait_for_ip_version | v4 | Especifica qué versión de IP debe esperar. Puede ser v4 o v6. |
wait_for_ip_range | 0.0.0.0/0 | Especifica el CIDR de la dirección IP de la máquina virtual que debe ser reportada. Solo funciona para IPv4. |
debug_vm_create | false | Si es verdadero, registra las tareas de la máquina virtual que se está creando. El registro puede contener contraseñas. |
vm_infra_create_single_timeout | 180 | Tiempo en segundos para esperar que la VM sea creada y iniciada (si el estado es running). |
vm_infra_create_poll_interval | 15 | Intervalo de sondeo. Tiempo en segundos a esperar entre las verificaciones del estado de la VM. |
vm_infra_create_all_timeout | vm_infra_create_single_timeout * (vms.length) | Tiempo total para esperar que todas las VMs sean creadas/iniciadas. |
vm_infra_wait_for_ip_retries | 5 | Número de intentos para verificar si la VM está reportando su dirección IP. |
vm_infra_wait_for_ip_delay | 5 | Intervalo de sondeo de la dirección IP. Tiempo en segundos a esperar entre las verificaciones de si la VM reporta la dirección IP. |
Las variables vms
y profile
pueden contener los siguientes atributos, ten en cuenta que si defines la misma variable, el valor en vms
tendrá prioridad:
Nombre | Valor por defecto | |
---|---|---|
name | UNDEF | Nombre de la máquina virtual a crear. |
tag | UNDEF | Nombre de la etiqueta que se asignará a la máquina virtual. Solo los usuarios administradores pueden usar este atributo. |
cloud_init | UNDEF | Diccionario con valores para la inicialización de máquinas virtuales Unix-like usando cloud init. Consulta a continuación la sección cloud_init para una descripción más detallada. |
cloud_init_nics | UNDEF | Lista de diccionarios que representan las interfaces de red que se configurarán con cloud init. Consulta a continuación la sección cloud_init_nics para una descripción más detallada. |
sysprep | UNDEF | Diccionario con valores para la inicialización de máquinas virtuales Windows usando sysprep. Consulta a continuación la sección sysprep para más detalles. |
profile | UNDEF | Diccionario que especifica el hardware de la máquina virtual. Consulta la tabla a continuación. |
state | present | Indica si la máquina virtual debe estar detenida, presente o en ejecución. Tiene prioridad sobre el valor del estado en el perfil. |
nics | UNDEF | Lista de diccionarios que especifican las NICs de la máquina virtual. Consulta a continuación para más detalles. |
cluster | UNDEF | Nombre del clúster donde se creará la máquina virtual. |
clone | No | Si es sí, entonces los discos de la máquina virtual creada serán clonados e independientes de la plantilla. Este parámetro se usa solo cuando el estado es running o present y la VM no existía antes. |
template | Blanco | Nombre de la plantilla en base a la cual debe crearse la máquina virtual. |
template_version | UNDEF | Número de versión de la plantilla que se usará para la VM. Por defecto se utiliza la última versión disponible de la plantilla. |
memory | UNDEF | Cantidad de memoria de la máquina virtual. |
memory_max | UNDEF | Límite superior de memoria de la máquina virtual hasta el cual se puede realizar la adición de memoria en caliente. |
memory_guaranteed | UNDEF | Cantidad mínima de memoria garantizada de la máquina virtual. El prefijo sigue el estándar IEC 60027-2 (por ejemplo, 1GiB, 1024MiB). El parámetro memory_guaranteed no puede ser menor que el parámetro memory. |
cores | UNDEF | Número de núcleos de CPU utilizados por la máquina virtual. |
sockets | UNDEF | Número de zócalos de CPU virtuales de la máquina virtual. |
cpu_shares | UNDEF | Establecer un valor de participación de CPU para esta máquina virtual. |
cpu_threads | UNDEF | Establecer hilos de CPU para esta máquina virtual. |
disks | UNDEF | Lista de diccionarios que especifican discos adicionales de la máquina virtual. Consulta a continuación para más detalles. |
nics | UNDEF | Lista de diccionarios que especifican las NICs de la máquina virtual. Consulta a continuación para más detalles. |
custom_properties | UNDEF | Propiedades enviadas a VDSM para configurar varios hooks. Las propiedades personalizadas son una lista de diccionarios que pueden contener los siguientes valores: name - Nombre de la propiedad personalizada. Ejemplo: hugepages, vhost, sap_agent, etc. regexp - Expresión regular para establecer para la propiedad personalizada. value - Valor a establecer para la propiedad personalizada. |
high_availability | UNDEF | Si el nodo debe configurarse como altamente disponible o no. |
high_availability_priority | UNDEF | Indica la prioridad de la máquina virtual dentro de las colas de ejecución y migración. Las máquinas virtuales con prioridades más altas se iniciarán y migrarán antes que las máquinas virtuales con prioridades más bajas. El valor es un número entero entre 0 y 100. Cuanto mayor sea el valor, mayor será la prioridad. Si no se pasa ningún valor, se establece un valor predeterminado por el motor oVirt/RHV. |
io_threads | UNDEF | Número de hilos de IO utilizados por la máquina virtual. 0 significa que el uso de hilos de IO está desactivado. |
description | UNDEF | Descripción de la máquina virtual. |
operating_system | UNDEF | Sistema operativo de la máquina virtual. Por ejemplo: rhel_7x64 |
type | UNDEF | Tipo de la máquina virtual. Valores posibles: desktop, server o high_performance |
graphical_console | UNDEF | Asignar consola gráfica a la máquina virtual. La consola gráfica es un diccionario que puede tener los siguientes valores: headless_mode - Si es verdadero, desactiva la consola gráfica para esta máquina virtual. protocol - 'VNC', 'Spice' o ambos. |
storage_domain | UNDEF | Nombre del dominio de almacenamiento donde se crearán todos los discos de la máquina virtual. Se considera solo cuando se proporciona una plantilla. |
state | present | Indica si la máquina virtual debe estar detenida, presente o en ejecución. |
ssh_key | UNDEF | Clave SSH que se desplegará en la máquina virtual. Este parámetro se mantiene por compatibilidad y tiene prioridad sobre authorized_ssh_keys en el diccionario cloud_init. |
domain | UNDEF | El dominio de la máquina virtual. Este parámetro se mantiene por compatibilidad y tiene prioridad sobre host_name en el diccionario cloud_init o sysprep. |
lease | UNDEF | Nombre del dominio de almacenamiento en el que reside el arrendamiento de esta máquina virtual. |
root_password | UNDEF | La contraseña de root de la máquina virtual. Este parámetro se mantiene por compatibilidad y tiene prioridad sobre root_password en el diccionario cloud_init o sysprep. |
host | UNDEF | Si necesitas establecer el modo de CPU como host_passthrough, debes usar este parámetro para definir el host a utilizar junto con placement_policy establecida como pinned. |
cpu_mode | UNDEF | Modo de CPU de la máquina virtual. Puede ser alguno de los siguientes: host_passthrough, host_model o custom. |
placement_policy | UNDEF | La configuración de la política de colocación de la máquina virtual. |
boot_devices | UNDEF | Lista de dispositivos de arranque que se utilizarán para arrancar. Las entradas válidas son cdrom , hd , network . |
serial_console | UNDEF | Verdadero para habilitar la consola serial VirtIO, falso para deshabilitarla. Por defecto es elegida por el motor oVirt/RHV. |
serial_policy | UNDEF | Especificar una política de número de serie para la máquina virtual. 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 - Te permite especificar un número de serie personalizado en serial_policy_value. |
serial_policy_value | UNDEF | Te permite especificar un número de serie personalizado. Este parámetro solo se usa cuando serial_policy es personalizado. |
comment | UNDEF | Comentario de la máquina virtual. |
Los elementos en la lista disks
del diccionario profile
pueden contener los siguientes atributos:
Nombre | Valor por defecto | |
---|---|---|
size | UNDEF | El tamaño del disco adicional. |
name | UNDEF | El nombre del disco adicional. |
id | UNDEF | ID del disco. Si pasas el ID del disco y el nombre, el disco se buscará por ID y se actualizará el nombre si difiere del nombre pasado en el parámetro nombre. |
storage_domain | UNDEF | El nombre del dominio de almacenamiento donde debe crearse el disco. |
interface | UNDEF | La interfaz del disco. |
name_prefix | True | Si es verdadero, el nombre de la VM se utilizará como prefijo del nombre del disco. Si es falso, solo se usará el nombre del disco como nombre del disco. Esto puede ser útil al crear una VM a partir de una plantilla con un tamaño de disco personalizado. |
format | UNDEF | Especificar el formato del disco.
|
bootable | UNDEF | Verdadero si el disco debe ser arrancable. |
activate | UNDEF | Verdadero si el disco debe ser activado. |
Los elementos en la lista nics
del diccionario profile
pueden contener los siguientes atributos:
Nombre | Valor por defecto | |
---|---|---|
name | UNDEF | El nombre de la interfaz de red. |
interface | UNDEF | Tipo de la interfaz de red. |
mac_address | UNDEF | Dirección MAC personalizada de la interfaz de red, por defecto se obtiene del pool de MAC. |
network | UNDEF | Red lógica que la interfaz de red de la VM debe usar. Si no se especifica red, se utiliza la red vacía. |
profile | UNDEF | Perfil de interfaz de red virtual que se adjuntará a la interfaz de red de la VM. |
La lista affinity_groups
puede contener los siguientes atributos:
Nombre | Valor por defecto | |
---|---|---|
cluster | UNDEF (Requerido) | Nombre del clúster del grupo de afinidad. |
description | UNDEF | Descripción legible por humanos. |
host_enforcing | false |
|
host_rule | UNDEF |
|
hosts | UNDEF | Lista de nombres de host asignados a este grupo. |
name | UNDEF (Requerido) | Nombre del grupo de afinidad. |
state | UNDEF | Indica si el grupo debe estar presente o ausente. |
vm_enforcing | false |
|
vm_rule | UNDEF |
|
vms | UNDEF | Lista de VMs que se asignarán a este grupo de afinidad. |
wait | true | Si es verdadero, el módulo esperará el estado deseado. |
La lista affinity_labels
puede contener los siguientes atributos:
Nombre | Valor por defecto | |
---|---|---|
cluster | UNDEF (Requerido) | Nombre del clúster del grupo de etiquetas de afinidad. |
hosts | UNDEF | Lista de nombres de host asignados a esta etiqueta. |
name | UNDEF (Requerido) | Nombre de la etiqueta de afinidad. |
state | UNDEF | Indica si la etiqueta debe estar presente o ausente. |
vms | UNDEF | Lista de VMs que se asignarán a esta etiqueta de afinidad. |
El diccionario cloud_init
puede contener los siguientes atributos:
Nombre | Descripción |
---|---|
host_name | Nombre del host que se establecerá para la máquina virtual al desplegarla. |
timezone | Zona horaria que se establecerá para la máquina virtual al desplegarla. |
user_name | Nombre de usuario que se utilizará para establecer la contraseña para la máquina virtual al desplegarla. |
root_password | Contraseña que se establecerá para el usuario especificado por el parámetro user_name. Por defecto se establece para el usuario root. |
authorized_ssh_keys | Usar estas claves SSH para iniciar sesión en la máquina virtual. |
regenerate_ssh_keys | Si es verdadero, las claves SSH se regenerarán en la máquina virtual. |
custom_script | Script de cloud-init que se ejecutará en la máquina virtual al desplegarla. Esto se añade al final del script de cloud-init generado por otras opciones. |
dns_servers | Servidores DNS que se configurarán en la máquina virtual. |
dns_search | Dominios de búsqueda DNS que se configurarán en la máquina virtual. |
nic_boot_protocol | Establecer el protocolo de arranque de la interfaz de red de la máquina virtual. Puede ser uno de none, dhcp o static. |
nic_ip_address | Si el protocolo de arranque es estático, establece esta dirección IP en la interfaz de red de la máquina virtual. |
nic_netmask | Si el protocolo de arranque es estático, establece esta máscara de red en la interfaz de red de la máquina virtual. |
nic_gateway | Si el protocolo de arranque es estático, establece esta puerta de enlace en la interfaz de red de la máquina virtual. |
nic_name | Establecer nombre en la interfaz de red de la máquina virtual. |
nic_on_boot | Si es verdadero, la interfaz de red se configurará para iniciarse en el arranque. |
El diccionario sysprep
puede contener los siguientes atributos:
Nombre | Descripción |
---|---|
host_name | Nombre del host que se establecerá para la máquina virtual al desplegarla. |
active_directory_ou | Unidad Organizativa de Active Directory, que se utilizará para el inicio de sesión del usuario. |
org_name | Nombre de la organización que se establecerá para la máquina virtual de Windows. |
user_name | Nombre de usuario que se utilizará para establecer la contraseña de la máquina virtual de Windows. |
root_password | Contraseña que se establecerá para el usuario especificado por el parámetro user_name. Por defecto se establece para el usuario root. |
windows_license_key | Clave de licencia que se establecerá para la máquina virtual de Windows. |
input_locale | Localización de entrada de la máquina virtual de Windows. |
system_locale | Localización del sistema de la máquina virtual de Windows. |
ui_language | Idioma de la interfaz de usuario de la máquina virtual de Windows. |
domain | Dominio que se establecerá para la máquina virtual de Windows. |
timezone | Zona horaria que se establecerá para la máquina virtual de Windows. |
La lista cloud_init_nics
es una lista de diccionarios que representan las interfaces de red que se configurarán mediante cloud init. Esta opción se usa cuando se necesitan configurar más interfaces de red mediante cloud init. Si una interfaz de red es suficiente, el usuario debe usar los parámetros cloud_init nic_*. Los parámetros cloud_init nic_* se combinan con los parámetros de cloud_init_nics. El diccionario puede contener los siguientes valores.
Nombre | Descripción |
---|---|
nic_boot_protocol | Establece el protocolo de arranque de la interfaz de red de la máquina virtual. Puede ser uno de none, dhcp o static. |
nic_ip_address | Si el protocolo de arranque es estático, establece esta dirección IP en la interfaz de red de la máquina virtual. |
nic_netmask | Si el protocolo de arranque es estático, establece esta máscara de red en la interfaz de red de la máquina virtual. |
nic_gateway | Si el protocolo de arranque es estático, establece esta puerta de enlace en la interfaz de red de la máquina virtual. |
nic_name | Establecer nombre en la interfaz de red de la máquina virtual. |
nic_on_boot | Si es verdadero, la interfaz de red se configurará para iniciarse en el arranque. |
Dependencias
Ninguna.
Ejemplo de Playbook
---
- name: infraestructura de oVirt
hosts: localhost
connection: local
gather_facts: false
vars_files:
# Contiene la variable encriptada `engine_password` usando ansible-vault
- passwords.yml
vars:
engine_fqdn: ovirt-engine.example.com
engine_user: admin@internal
engine_cafile: /etc/pki/ovirt-engine/ca.pem
httpd_vm:
cluster: producción
domain: example.com
template: rhel7
memory: 2GiB
cores: 2
ssh_key: ssh-rsa AAA...LGx user@fqdn
disks:
- size: 10GiB
name: data
storage_domain: mynfsstorage
interface: virtio
db_vm:
cluster: producción
domain: example.com
template: rhel7
memory: 4GiB
cores: 1
ssh_key: ssh-rsa AAA...LGx user@fqdn
disks:
- size: 50GiB
name: data
storage_domain: mynfsstorage
interface: virtio
nics:
- name: ovirtmgmt
network: ovirtmgmt
profile: ovirtmgmt
vms:
- name: postgresql-vm-0
tag: postgresql_vm
profile: "{{ db_vm }}"
- name: postgresql-vm-1
tag: postgresql_vm
profile: "{{ db_vm }}"
- name: apache-vm
tag: httpd_vm
profile: "{{ httpd_vm }}"
affinity_groups:
- name: db-ag
cluster: producción
vm_enforcing: true
vm_rule: negativo
vms:
- postgresql-vm-0
- postgresql-vm-1
roles:
- ovirt.vm-infra
El siguiente ejemplo muestra cómo usar el inventario creado por el rol ovirt.vm-infra
en un play posterior.
---
- name: Desplegar VM apache
hosts: localhost
connection: local
gather_facts: false
vars_files:
# Contiene la variable encriptada `engine_password` usando ansible-vault
- passwords.yml
vars:
wait_for_ip: true
httpd_vm:
cluster: producción
state: running
domain: example.com
template: rhel7
memory: 2GiB
cores: 2
ssh_key: ssh-rsa AAA...LGx user@fqdn
disks:
- size: 10GiB
name: data
storage_domain: mynfsstorage
interface: virtio
vms:
- name: apache-vm
tag: apache
profile: "{{ httpd_vm }}"
roles:
- ovirt.vm-infra
- name: Desplegar apache en VM
hosts: ovirt_tag_apache
vars_files:
- apache_vars.yml
roles:
- geerlingguy.apache
Licencia
Licencia Apache 2.0
Role to manage virtual machine infrastructure in oVirt.
ansible-galaxy install ovirt.vm-infra