Eu gostaria de usar o Ansible para criar uma VM Linux a partir de um modelo e, em seguida, executar o Ansible para configurar a caixa. O modelo é apenas uma instalação básica, sem mais nada. Depois que a VM for construída, a próxima tarefa deverá ser configurar a VM recém-criada.
Minha pergunta é sobre o anfitrião. A VM ainda não foi criada, então em qual host executo esse script? Se eu usar o vcenter como host, ele não conseguirá configurar a VM. Mas, se eu usar o IP do host o Ansible não vai encontrar porque ainda não foi criado.
Qual seria a melhor abordagem para isso?
- 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
Responder1
Você pode adicionar a nova VM ao inventário durante a reprodução, com wait_for para garantir que a VM esteja pronta:
---
- 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 detalhes.