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.
  • cow - Si se establece, el disco se creará como disco delgado, por lo que el espacio se asignará para el volumen según sea necesario. Este formato también se conoce como discos de aprovisionamiento fino.
  • raw - Si se establece, el espacio de disco se asignará de inmediato. Este formato también se conoce como discos preasignados.
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
  • verdadero - la VM no puede iniciarse en el host si no satisface la host_rule.
  • falso - la VM seguirá la host_rule con aplicación suave.
host_rule UNDEF
  • positivo - las VMs en este grupo deben ejecutarse en este host.
  • negativo - las VMs en este grupo no pueden ejecutarse en este host
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
  • verdadero - la VM no puede iniciarse si no satisface la vm_rule.
  • falso - la VM seguirá la vm_rule con aplicación suave.
vm_rule UNDEF
  • positivo - todas las VMs en este grupo intentan ejecutarse en el mismo host.
  • negativo - todas las VMs en este grupo intentan ejecutarse en hosts separados.
  • deshabilitado - este grupo de afinidad no tiene efecto.
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

asciicast

Licencia

Licencia Apache 2.0

Acerca del proyecto

Role to manage virtual machine infrastructure in oVirt.

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