Ansible crea una máquina virtual

Ansible crea una máquina virtual

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.

información relacionada