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.