Ansible erstellt eine VM

Ansible erstellt eine VM

Ich möchte Ansible verwenden, um eine Linux-VM aus einer Vorlage zu erstellen und dann Ansible ausführen, um die Box zu konfigurieren. Die Vorlage ist nur eine Basisinstallation ohne weitere Elemente. Sobald die VM erstellt ist, sollte die nächste Aufgabe darin bestehen, die neu erstellte VM zu konfigurieren.

Meine Frage betrifft den Host. Die VM ist noch nicht erstellt, also auf welchem ​​Host führe ich dieses Skript aus? Wenn ich vCenter als Host verwende, kann die VM nicht konfiguriert werden. Wenn ich jedoch die IP des Hosts verwende, findet Ansible sie nicht, da sie noch nicht erstellt wurde.

Was wäre hierfür die beste Vorgehensweise?

- 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

Antwort1

Sie können die neue VM während des Spiels zum Inventar hinzufügen und mit „wait_for“ sicherstellen, dass die VM bereit ist:

---
- 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!!"

Sehenhttps://docs.ansible.com/ansible/latest/modules/add_host_module.htmlfür Details.

verwandte Informationen