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 entornoVMWARE_HOST
. - El usuario de vCenter se establece con
vcenter_username
o la variable de entornoVMWARE_USER
. - La contraseña de vCenter se establece con
vcenter_password
o la variable de entornoVMWARE_PASSWORD
. - La validación de certificados se puede desactivar configurando
vcenter_validate_certs=no
o estableciendo la variable de entornoVMWARE_VALIDATE_CERTS
ano
.
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 datastorevmware_datastore
. - La VM se puede colocar en una carpeta especificando
vmware_folder
y en un pool de recursos especificandovmware_resource_pool
. - El nombre de la VM es
inventory_hostname
por defecto. Se puede cambiar convm_guestname
.
Configuraciones de la VM
- El nombre de host de la máquina es
inventory_hostname_short
por defecto. Se puede cambiar convm_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 dessh_keys
ypassword
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 dessh_keys
ypassword
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 VMwareMá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 es8
.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.
Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image