Me gustaría usar Ansible para crear una máquina virtual Linux a partir de una plantilla y luego ejecutar Ansible para configurar el cuadro. La plantilla es sólo una instalación básica sin nada más. Una vez creada la VM, la siguiente tarea debería ser configurar la VM recién creada.
Mi pregunta es sobre el anfitrión. La VM aún no se ha creado, entonces, ¿contra qué host ejecuto este script? Si uso vcenter como host, no podrá configurar la VM. Pero, si uso la IP del host, Ansible no la encontrará porque aún no se ha creado.
¿Cuál sería el mejor enfoque para esto?
- hosts: ???????
tasks:
- name: Clone a virtual machine from Linux template and customize
vmware_guest:
hostname: "{{ vcenter_host }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
validate_certs: no
datacenter: "{{ datacenter }}"
state: present
#folder: /DC1/vm
template: "{{ template }}"
name: "{{ vm_name }}"
cluster: "{{ cluster }}"
networks:
- name: VM Network
ip: 192.168.10.11
netmask: 255.255.255.0
wait_for_ip_address: True
customization:
domain: "{{ guest_domain }}"
dns_servers:
- 8.9.9.9
- 7.8.8.9
delegate_to: localhost
- name: configure VM
Respuesta1
Puedes agregar la nueva VM al inventario durante el juego, con un wait_for para asegurarte de que la VM esté lista:
---
- hosts: localhost
vars:
vm: ubuntutest
tasks:
- name: Clone a virtual machine from Linux template and customize
vmware_guest:
... etc
- add_host:
name: "{{ vm }}"
groups: examplegroup
somecustomvar: wowamazing
- wait_for:
host: "{{ vm }}"
port: 22
delay: 3
timeout: 320
state: started
- hosts: examplegroup
tasks:
- debug:
msg: "it works!!"
Verhttps://docs.ansible.com/ansible/latest/modules/add_host_module.htmlpara detalles.