mbach04.nutanix_vm_provisioner
Nutanix VM Provisioner
Un rol básico de Ansible para aprovisionar máquinas virtuales en un Nutanix AHV usando APIv3.
Variables Requeridas
api_version: "3.0" # Nutanix está dejando de usar la API v2, es mejor usar v3 si está disponible
cluster_url: 172.16.1.100 # Dirección IP donde normalmente iniciarías sesión en PRISM
prism_user: admin # Una cuenta con permisos para aprovisionar en el clúster
prism_password: secret # La contraseña de tu cuenta. Nota: no debes almacenar esto en texto claro, usa Ansible vault
cluster_name: "Tu Clúster" # Nombre del clúster contra el que aprovisionar
subnet_name: "VMNet" # Nombre de la subred (vlan) a la que añadir las VMs
image_name: "RHEL_Server_7.5" # Nombre de la imagen de disco o ISO a usar
# Una lista de diccionarios que definen las VMs que deseas crear
# Nota: puedes dividir esto en varias listas separadas y sobrescribir vm_defs al llamar al rol para recorrer
# varios conjuntos de VMs.
vm_defs:
- {vm_name: mi-vm-01, vm_ip: '172.16.1.111', vm_ram: 8192, vm_num_cpu_per_socket: 1, vm_num_sockets: 1, vm_disk_list: [disk_size_mib: 152588]}
Cloud-init
Si no deseas usar personalización de invitado (cloud-init en este caso), entonces retira la sección guest_customization
del archivo templates/vm-body.yml.j2
, o conviértelo en una variable y envía tu cambio a este repositorio. :-)
Si deseas usar el rol con un script de cloud-init y establecer una contraseña de usuario, puedes hacerlo (pero no es la mejor práctica de seguridad).
Usa el siguiente comando en un host RHEL para generar una contraseña hasheada SHA-512 que será usada como cloud_init_root_pass
con la imagen de RHEL kvm
.
python -c 'import crypt,getpass; print crypt.crypt(getpass.getpass())'
Establece la cadena resultante igual a cloud_init_root_pass
en group_vars/*/all.yaml
.
Ejemplo de Playbook
---
- name: Aprovisionar algunas VMs
hosts: localhost
gather_facts: false
vars:
mis_vms:
- {vm_name: servidor1, vm_ip: '172.29.171.100', vm_ram: 4096, vm_num_cpu_per_socket: 1, vm_num_sockets: 4, vm_disk_list: [disk_size_mib: 76294, disk_size_mib: 152588]}
- {vm_name: servidor2, vm_ip: '172.29.171.101', vm_ram: 4096, vm_num_cpu_per_socket: 1, vm_num_sockets: 4, vm_disk_list: [disk_size_mib: 76294, disk_size_mib: 152588]}
tasks:
- name: Aprovisionar VMs en Nutanix
include_role:
name: nutanix_provisioner
vars:
vm_defs: "{{ mis_vms }}"
Licencia
Licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Información del Autor
Creado por Matthew Bach y Timothy Ling, de Red Hat.
ansible-galaxy install mbach04.nutanix_vm_provisioner