Ich habe zwei Playbooks - mein erstes Playbook iteriert auf der Liste der ESXi-Server, ruft eine Liste aller VMs ab und übergibt diese Liste an das zweite Playbook, das iteriert werden soll die IPs der VMs. Stattdessen versucht es immer noch, auf dem letzten ESXi-Server ausgeführt zu werden. Ich muss den Host auf die VM IP umschalten, die ich gerade an das zweite Playbook übergebe. Ich weiß nicht wie ich umschalten soll ... Irgendjemand?So wechseln Sie das Ansible-Playbook auf einen anderen Host, wenn Sie das zweite Playbook aufrufen
Erstes Textbuch:
- name: get VM list from ESXi
hosts: all
tasks:
- name: get facts
vmware_vm_facts:
hostname: "{{ inventory_hostname }}"
username: "{{ ansible_ssh_user }}"
password: "{{ ansible_ssh_pass }}"
delegate_to: localhost
register: esx_facts
- name: Debugging data
debug:
msg: "IP of {{ item.key }} is {{ item.value.ip_address }} and is {{ item.value.power_state }}"
with_dict: "{{ esx_facts.virtual_machines }}"
- name: Passing data to include file
include: includeFile.yml ip_address="{{ item.value.ip_address }}"
with_dict: "{{ esx_facts.virtual_machines }}"
Mein zweites Textbuch:
- name: <<Check the IP received
debug:
msg: "Received IP: {{ ip_address }}"
- name: <<Get custom facts
vmware_vm_facts:
hostname: "{{ ip_address }}"
username: root
password: passw
validate_certs: False
delegate_to: localhost
register: custom_facts
erhalte ich tun, um die ip-adresse der richtige VM aber vmware_vm_facts immer noch versucht, auf dem ESXi-Server anstatt zu laufen ...
Für den Anfang verwenden Sie bitte die richtigen Bedingungen: Sie haben ein Playbook mit einem Spiel und enthalten eine Aufgaben-Datei. Sie behaupten also, Sie delegieren die Aufgabe an localhost, aber sie wird woanders ausgeführt? Wenn ja, könnten Sie 80% des von Ihnen geposteten Codes abschneiden und das gleiche Ergebnis erzielen. – techraf
Außerdem wird die Task "<< Benutzerdefinierte Daten abrufen" mehrmals für alle Ziele im Inventar ausgeführt, aber das ist nicht der Ort, an dem sie ausgeführt wird. Sie könnten verwirrt sein, wenn Sie das Protokoll falsch lesen. – techraf
Und natürlich scheint die ganze Idee, 'vmware_vm_facts' doppelt zu verwenden, ziemlich seltsam. – techraf