t2d.ansible_role_libvirt_vm

Máquina Virtual de Libvirt

Este rol configura y crea (o destruye) máquinas virtuales en un hipervisor KVM.

Requisitos

El host debe tener habilitada la Tecnología de Virtualización (VT) y debe estar preconfigurado con libvirt/KVM.

Variables del Rol

  • libvirt_vm_default_console_log_dir: El directorio predeterminado donde se almacenan los registros de la consola de la VM, si no se proporciona una ruta de archivo de registro específica. Por defecto es "/var/log/libvirt/qemu/".

  • libvirt_vm_image_cache_path: El directorio donde se almacenan en caché las imágenes descargadas. Por defecto es "/tmp/".

  • libvirt_volume_default_images_path: Directorio donde se almacenan las imágenes de las instancias. Por defecto es '/var/lib/libvirt/images'.

  • libvirt_volume_default_type: ¿Qué tipo de volumen de respaldo utiliza la instancia? Por defecto es volume.

  • libvirt_volume_default_format: Formato para los volúmenes creados por el rol. Por defecto es qcow2.

  • libvirt_volume_default_device: Controla cómo aparece el dispositivo en el sistema operativo invitado. Por defecto es disk.

  • libvirt_vm_engine: Motor de virtualización. Si no se establece, el rol intentará detectar automáticamente el motor óptimo a utilizar.

  • libvirt_vm_emulator: ruta al binario del emulador. Si no se establece, el rol intentará detectar automáticamente el emulador correcto a usar.

  • libvirt_cpu_mode_default: El modo de CPU predeterminado si libvirt_cpu_mode o vm.cpu_mode no están definidos.

  • libvirt_vm_arch: Arquitectura de CPU, por defecto es x86_64.

  • libvirt_vm_uri: Sobrescribe la URI de conexión de libvirt. Consulta la documentación de libvirt para más detalles.

  • libvirt_vm_virsh_default_env: Las variables contenidas en este diccionario se agregan al entorno utilizado al ejecutar comandos virsh.

  • libvirt_vm_clock_offset: Si está definido, se establece el desfase horario de las instancias al valor proporcionado. Cuando no está definido, la sincronización se establece en localtime.

  • libvirt_vms: lista de VMs a ser creadas o destruidas. Cada una puede tener los siguientes atributos:

    • state: se establece en present para crear o absent para destruir la VM. Por defecto es present.

    • name: el nombre que se asignará a la VM.

    • memory_mb: la memoria para asignar a la VM, en megabytes.

    • vcpus: el número de núcleos VCPU a asignar a la VM.

    • machine: Tipo de máquina virtual. Por defecto es None si libvirt_vm_engine es kvm, de lo contrario pc-1.0.

    • cpu_mode: Modo de CPU de la máquina virtual. Por defecto es host-passthrough si libvirt_vm_engine es kvm, de lo contrario host-model. Puede configurarse como ninguno para no configurar un modo de CPU.

    • clock_offset: Sobrescribe el valor predeterminado establecido en libvirt_vm_clock_offset.

    • enable_vnc: Si es verdadero, habilita VNC escuchando en localhost para usar con VirtManager y herramientas similares.

    • volumes: una lista de volúmenes para adjuntar a la VM. Cada volumen se define con el siguiente diccionario:

      • pool: Nombre o UUID del pool de almacenamiento del cual se debe asignar el volumen.
      • name: Nombre para asociar con el volumen que se está creando; para volúmenes de tipo file, incluye la extensión si deseas que se cree con una.
      • file_path: Donde debe colocarse la imagen de los volúmenes de tipo file; por defecto es libvirt_volume_default_images_path.
      • device: disk o cdrom.
      • capacity: capacidad del volumen (puede tener sufijos como M,G,T o MB,GB,TB, etc.) (requerido cuando el tipo es disk).
      • format: las opciones incluyen raw, qcow2, vmdk. Consulta man virsh para el rango completo. Por defecto es qcow2.
      • image: (opcional) una URL a una imagen con la que se inicializa el volumen (copia completa).
      • backing_image: (opcional) nombre del volumen de respaldo que se supone ya está en el mismo pool (copia bajo demanda).
      • image y backing_image son opciones excluyentes.
      • target: (opcional) Influenciar manualmente el tipo y orden de los volúmenes.
    • interfaces: una lista de interfaces de red para adjuntar a la VM. Cada interfaz de red se define con el siguiente diccionario:

      • type: El tipo de la interfaz. Posibles valores:

        • network: Adjunta la interfaz a una red virtual Libvirt nombrada. Este es el valor por defecto.
        • direct: Adjunta directamente la interfaz a uno de los interfaces físicos del host, utilizando el controlador macvtap.
      • network: Nombre de la red a la que debe estar adjunta una interfaz. Debe especificarse si y solo si el type de la interfaz es network.

      • mac: "Dirección" hardware de la instancia virtual; si está ausente, se crea una.

      • source: Un diccionario que define la interfaz del host a la que debe estar adjunta esta interfaz de VM. Debe especificarse si y solo si el type de la interfaz es direct. Incluye los siguientes atributos:

        • dev: El nombre de la interfaz del host a la que debe estar adjunta esta interfaz de VM.
        • mode: las opciones incluyen vepa, bridge, private y passthrough. Consulta man virsh para más detalles. Por defecto es vepa.
    • console_log_enabled: si es true, registra la salida de la consola en un archivo en la ruta especificada por console_log_path, en lugar de a un PTY. Si es false, redirige la salida de terminal a un PTY en el puerto serie 0. Por defecto es false.

    • console_log_path: Ruta al archivo de registro de la consola. Por defecto es {{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log.

    • start: Si iniciar la VM inmediatamente después de definirla. Por defecto es true.

    • autostart: Si iniciar la VM cuando arranca el host. Por defecto es true.

    • xml_file: Ocasionalmente proporciona una plantilla XML modificada. Personaliza basándote en la plantilla predeterminada vm.xml.j2 para incluir las expresiones jinja que utiliza el rol.

Nota: las siguientes variables están obsoletas: libvirt_vm_state, libvirt_vm_name, libvirt_vm_memory_mb, libvirt_vm_vcpus, libvirt_vm_engine, libvirt_vm_machine, libvirt_vm_cpu_mode, libvirt_vm_volumes, libvirt_vm_interfaces y libvirt_vm_console_log_path. Si la variable libvirt_vms se deja sin establecer, su valor predeterminado será una lista única que contiene una especificación de VM usando estas variables obsoletas.

Dependencias

Si se utilizan discos en formato qcow2, se requiere qemu-img (en el paquete qemu-utils).

Ejemplo de Playbook

---
- name: Crear VMs
  hosts: hipervisor
  roles:
    - role: stackhpc.libvirt-vm
      libvirt_vms:
        - state: present
          name: 'vm1'
          memory_mb: 512
          vcpus: 2
          volumes:
            - name: 'data1'
              device: 'disk'
              format: 'qcow2'
              capacity: '400GB'
              pool: 'my-pool'
            - name: 'debian-10.2.0-amd64-netinst.iso'
              type: 'file'
              device: 'cdrom'
              format: 'raw'
              target: 'hda'  # primer dispositivo en el bus ide
          interfaces:
            - network: 'br-datacentre'

        - state: present
          name: 'vm2'
          memory_mb: 1024
          vcpus: 1
          volumes:
            - name: 'data2'
              device: 'disk'
              format: 'qcow2'
              capacity: '200GB'
              pool: 'my-pool'
            - name: 'filestore'
              type: 'file'
              file_path: '/srv/cloud/images'
              capacity: '900GB'
          interfaces:
            - type: 'direct'
              source:
                dev: 'eth123'
                mode: 'private'
            - type: 'bridge'
              source:
                dev: 'br-datacentre'

Información del Autor

Acerca del proyecto

Role to configure and create VMs on a Libvirt/KVM hypervisor

Instalar
ansible-galaxy install t2d.ansible_role_libvirt_vm
Licencia
Unknown
Descargas
83
Propietario