hamburger_software.vmware_ubuntu_cloud_image

vmware_ubuntu_cloud_image

Rol de Ansible para crear máquinas virtuales basadas en Imágenes de Nube de Ubuntu en un entorno vSphere.

Imágenes de Nube de Ubuntu

Ubuntu ofrece imágenes preinstaladas para su uso en nubes. Uno de los formatos de imagen disponibles es Open Virtualization Appliance (OVA), que se puede importar a VMware. Las imágenes utilizan el mecanismo cloud-init para permitir una configuración básica. Lamentablemente, no hay soporte para usar direcciones IP estáticas ni para ajustar el hardware durante la creación de la máquina.

Este rol agrega soporte para estas características.

Características

  • Crea una máquina virtual (VM) a partir de un archivo OVA descargado previamente.
  • Establece el nombre de host.
  • Agrega una o más claves públicas SSH y/o una contraseña para el usuario predeterminado "ubuntu" para que Ansible pueda conectarse a la nueva máquina.
  • Opcionalmente ajusta el hardware, por ejemplo, el número de CPUs o memoria. Consulta vmware_guest para personalizaciones posibles.
  • Opcionalmente establece notas de la VM (anotaciones), parámetros del archivo de configuración de la VM y/o atributos personalizados de la VM.
  • Se puede aumentar el tamaño del disco (por defecto 10GB), y se pueden crear y agregar discos adicionales.
  • Opcionalmente cambia la dirección IP dinámica a estática (tomada del playbook o de DNS).
  • La VM se inicia y puede usarse en el mismo playbook que invocó este rol.
  • Se pueden crear varias VMs en paralelo.
  • Probado con Imágenes de Nube de Ubuntu 21.04, 20.10, 20.04, 19.10, 19.04, 18.10, 18.04 y 17.10. Las versiones más antiguas no funcionan porque no usan netplan para la configuración de red.

Requisitos

Para usar este rol, necesitas:

  • Un entorno vSphere donde se implementará la VM.
  • Credenciales para el servidor vCenter de ese entorno con permisos adecuados, consulta más abajo.
  • Un archivo OVA, por ejemplo, ubuntu-18.04-server-cloudimg-amd64.ova en la máquina de control.

Si quieres recuperar las direcciones IP de las VMs desde DNS, también debes:

  • Instalar dnspython (una biblioteca de python, http://www.dnspython.org/) en la máquina de control.
  • Utilizar nombres de dominio completamente calificados (FQDN, por ejemplo, host.ejemplo.org) en el inventario. El FQDN también se usará como el nombre de la VM.
  • Agregar registros A para cada VM que deseas crear.

La versión mínima de Ansible es 2.10.7. La versión mínima de la colección community.vmware es 1.8.0, que es parte del paquete comunitario de Ansible 3.2.0.

Permisos de vSphere

Los permisos mínimos para crear una VM con este rol son:

DataStore > Allocación de Espacio
Network > Asignar Red
Resource > Asignar Máquina Virtual a Pool de Recursos
vApp > Importar
Máquina Virtual > Interacción > Encender
Máquina Virtual > Configuración > Agregar Nuevo Disco

Para ajustar configuraciones de CPU y memoria, necesitas:

Máquina Virtual > Configuración > Cambiar número de CPU
Máquina Virtual > Configuración > Memoria

Para ajustar el tamaño del disco, necesitas:

Máquina Virtual > Configuración > Ampliar disco virtual

Opciones de configuración avanzadas pueden requerir privilegios adicionales.

Variables del Rol

Conexión de vCenter

  • La URL del servidor vCenter se establece con vcenter_hostname o la variable de entorno VMWARE_HOST.
  • El usuario de vCenter se establece con vcenter_username o la variable de entorno VMWARE_USER.
  • La contraseña de vCenter se establece con vcenter_password o la variable de entorno VMWARE_PASSWORD.
  • La validación de certificados se puede desactivar configurando vcenter_validate_certs=no o estableciendo la variable de entorno VMWARE_VALIDATE_CERTS a no.

Configuraciones de VMware

  • El archivo OVA en la máquina de control se especifica con ova_file.
  • La VM se crea en el centro de datos vmware_datacenter en el datastore vmware_datastore.
  • La VM se puede colocar en una carpeta especificando vmware_folder y en un pool de recursos especificando vmware_resource_pool.
  • El nombre de la VM es inventory_hostname por defecto. Se puede cambiar con vm_guestname.

Configuraciones de la VM

  • El nombre de host de la máquina es inventory_hostname_short por defecto. Se puede cambiar con vm_hostname.
  • Usa ssh_keys para establecer una lista de claves públicas que se agregarán al archivo authorized_keys del usuario "ubuntu". Al menos uno de ssh_keys y password debe especificarse para que Ansible pueda conectarse a la nueva máquina.
  • Usa password para establecer una contraseña para el usuario "ubuntu". Al menos uno de ssh_keys y password debe especificarse para que Ansible pueda conectarse a la nueva máquina.
  • El hardware puede ser especificado con hardware, que contiene un diccionario como se especifica en vmware_guest.
  • El tamaño del disco se puede ajustar con disk. Este parámetro acepta una lista de especificaciones de disco como se documenta en vmware_guest_disk. El primer disco corresponde al disco virtual importado. Su tamaño solo puede ser aumentado. Consulta el playbook de ejemplo a continuación para su uso.
  • Se pueden especificar asignaciones de red definidas por el usuario con networks, consulta vmware_deploy_ovf para su significado.
  • Se pueden establecer notas de VM con annotation. Para usar esta característica, se requiere el permiso de VMware Máquina Virtual > Configuración > Establecer anotación.
  • Para establecer parámetros del archivo de configuración de la VM, proporciona advanced_settings con una lista de diccionarios como se muestra en el playbook de ejemplo.
  • Para establecer atributos personalizados de la VM, proporciona customvalues con una lista de diccionarios como se muestra en el playbook de ejemplo. Ten en cuenta que los nuevos valores personalizados no se crearán, deben existir en vCenter antes de la implementación.

Para usar una dirección IP estática, utiliza las siguientes claves en el diccionario static_ip:

  • ipv4 - una dirección IPv4 específica que deseas asignar. Por defecto se asigna a la dirección IPv4 que se encuentra en DNS para el FQDN.
  • netmask - la máscara de red en notación CIDR, por defecto es 8.
  • gateway - la puerta de enlace predeterminada (obligatoria)
  • dns_servers - una lista de las direcciones IP de los servidores DNS, por defecto son los servidores DNS públicos de Google.
  • dns_search - una lista de nombres de dominio que se utilizarán como sufijos de búsqueda de DNS. Usa esto para poner tu VM en un dominio.

Configuraciones de Inventario

Como las VMs aún no existen, la clave del servidor SSH es desconocida. Para conectarse a las nuevas VMs, necesitas desactivar la verificación de claves de host SSH. Si planeas recrear frecuentemente VMs con los mismos FQDNs, SSH no debe almacenar las huellas digitales en el archivo known_hosts.

Por lo tanto, las variables recomendadas para el host/grupo son:

ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Dependencias

Este rol no depende de otros roles.

Playbook de Ejemplo

playbook:

- name: Desplegar una Aparecida Virtual de Imagen de Nube de Ubuntu
  hosts: cloudimg
  gather_facts: no

  roles:
    - rol: hamburger_software.vmware_ubuntu_cloud_image
      vars:
        vcenter_hostname: vcenter.tu.dominio
        vcenter_username: [email protected]
        vcenter_password: muysecreto
        vcenter_validate_certs: no
        vmware_datacenter: tu-datacenter
        vmware_datastore: tu-datastore
        vmware_folder: tu-datacenter/vm/alguna-carpeta
        ova_file: ubuntu-20.04-server-cloudimg-amd64.ova
        hardware:
          num_cpus: 4
          memory_mb: 2048
        annotation: 'VM de ejemplo basada en Imagen de Nube de Ubuntu'
        # esto evita mensajes excesivos en syslog de multipathd bajo Ubuntu 20.04
        advanced_settings:
          - key: disk.EnableUUID
            value: 'TRUE'
        customvalues:
          - key: 'tuclave'
            value: 'tuvalue'
        disk:
          - size_gb: 20
            datastore: tu-datastore
            scsi_controller: 0
            unit_number: 0
          - size_mb: 250
            datastore: tu-datastore
            scsi_controller: 0
            unit_number: 1
            type: thin
        static_ip:
          netmask: 16
          gateway: 10.0.42.1
          dns_servers: [10.0.47.11, 10.0.48.12]
          dns_search:
          - tu.dominio
        ssh_keys:
          - ssh-rsa AAAAB3Nz[...]== nombre-de-algun-clave
        password: passw0rd

inventario con 5 anfitriones:

[cloudimg]
vm-[1:5].tu.dominio

[cloudimg:vars]
ansible_user=ubuntu
ansible_password=passw0rd
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Licencia

MIT

Información del Autor

Este rol fue creado por Harald Albers en HS - Hamburger Software GmbH & Co. KG.

Acerca del proyecto

Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.

Instalar
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image
Licencia
mit
Descargas
732
Propietario
Product documentation and open source projects created at HS - Hamburger Software GmbH & Co. KG