Ansible cria uma VM

Ansible cria uma VM

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.

informação relacionada