This is a playbook part of a role that talks with vmware.
I'm is trying to set a custom fact (target_vm) that receive the virtual machine name.
But when I Print it's value with the debug module it apears to be empty.
I don't know what I'm is doing wrong in the set_fact module.
This is the Playbook
- delegate_to: localhost become: no delegate_facts: yes vars: vc_hostname: 'vcenter.bio.local' vc_username: 'bio.local\ansible' vc_password: "{{ v_pass }}" vm_uuid: '4217200F-46D2-C9FD-E7FD-768D21B327E8' | lower block: - name: Gather only registered virtual machines vmware_vm_info: hostname: '{{ vc_hostname }}' username: '{{ vc_username }}' password: '{{ vc_password }}' validate_certs: False vm_type: vm delegate_to: localhost register: virtual_info no_log: true - name: Set facts target_vm when equal vm-name set_fact: target_vm: "{{ my_item.guest_name }}" with_items: "{{ virtual_info.virtual_machines }}" when: my_item.uuid == vm_uuid loop_control: loop_var: my_item - name: Print Guest Name debug: msg: - "{{ foo_item.guest_name }}" - "{{ target_vm | default ('') }}" with_items: "{{ virtual_info.virtual_machines }}" when: foo_item.uuid == vm_uuid loop_control: loop_var: foo_item
This is the output
TASK [vmwaretaks : Gather only registered virtual machines] *********************************************************************************************** ok: [testvm] TASK [vmwaretaks : Set facts target_vm when equal vm-name] ************************************************************************************************ ok: [testvm] => (item={'guest_name': 'TESTVM', 'guest_fullname': 'Red Hat Enterprise Linux 6 (64-bit)', 'power_state': 'poweredOn', 'ip_address': '192.168.54.32', 'mac_address': ['00:32:52:97:e9:c8'], 'uuid': '4217200f-46d2-c9fd-e7fd-768d21b327e8', 'vm_network': {'00:32:52:97:e9:c8': {'ipv4': ['192.168.54.32'], 'ipv6': ['fe80::250:56ff:fe97:d4c3']}}, 'esxi_hostname': 'b3j15esx05.bio.local', 'cluster': 'JAS-Lab-DEP', 'attributes': {}, 'tags': []}) TASK [vmwaretaks : Print Guest Name] ********************************************************************************************************************** ok: [testvm] => (item={'guest_name': 'TESTVM', 'guest_fullname': 'Red Hat Enterprise Linux 6 (64-bit)', 'power_state': 'poweredOn', 'ip_address': '192.168.54.32', 'mac_address': ['00:32:52:97:e9:c8'], 'uuid': '4217200f-46d2-c9fd-e7fd-768d21b327e8', 'vm_network': {'00:32:52:97:e9:c8': {'ipv4': ['192.168.54.32'], 'ipv6': ['fe80::250:56ff:fe97:d4c3']}}, 'esxi_hostname': 'b3j15esx05.bio.local', 'cluster': 'JAS-Lab-DEP', 'attributes': {}, 'tags': []}) => { "msg": [ "TESTVM", "" ] } PLAY RECAP ************************************************************************************************************************************************ testvm : ok=13 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
As you can see the second message that prints the target_vm var output is empty
Hope you can help. Thanks in advance!
- name: Set facts target_vm when equal vm-name set_fact: target_vm: "{{ my_item['guest_name'] }}" with_items: "{{ virtual_info.virtual_machines }}" when: my_item.uuid == vm_uuid loop_control: loop_var: my_itemTASK [vmwaretaks : Set facts target_vm when equal vm-name] ************************************************************************* ok: [testvm] => (item={'guest_name': 'TESTVM', 'guest_fullname': 'Red Hat Enterprise Linux 6 (64-bit)', 'power_state': 'poweredOn', 'ip_address': '192.168.54.32', 'mac_address': ['00:32:52:97:e9:c8'], 'uuid': '4217200f-46d2-c9fd-e7fd-768d21b327e8', 'vm_network': {'00:32:52:97:e9:c8': {'ipv4': ['192.168.54.32']}}, 'esxi_hostname': 'b3j15esx05.bio.local', 'cluster': 'JAS-Lab-DEP', 'attributes': {}, 'tags': []}) => {"ansible_facts": {"target_vm": "TESTVM"}...