Это игровая часть роли, которая общается с vmware.
Я пытаюсь установить пользовательский факт (target_vm) которые получают имя виртуальной машины.
Но когда я печатаю это значение с помощью модуля отладки, оно кажется пустым.
Похоже, что set_fact установлен правильно, потому что вывод отладки показывает {"ansible_facts": {"target_vm": "TESTVM"}.
Я также сделал задачу Fail, которая показывает, установлен ли факт target_vm или нет.
Это Playbook
- delegate_to: локальный хост
стать: нет
делегат_факты: да
вары:
vc_hostname: 'vcenter.bio.local'
vc_username: 'bio.local\ansible'
vc_password: "{{v_pass}}"
vm_uuid: '4217200F-46D2-C9FD-E7FD-768D21B327E8' | ниже
блокировать:
- имя: Собирать только зарегистрированные виртуальные машины
vmware_vm_info:
имя хоста: '{{ vc_hostname }}'
имя пользователя: '{{ vc_username }}'
пароль: '{{ vc_password }}'
validate_certs: Ложь
вм_тип: вм
делегат_к: локальный
зарегистрироваться: виртуальная_информация
no_log: правда
- name: Получить имя ВМ из UUID
set_fact:
target_vm: "{{ my_item.guest_name }}"
цикл: "{{ virtual_info.virtual_machines}}"
когда: my_item.uuid == vm_uuid
loop_control:
loop_var: мой_элемент
делегат_к: локальный
делегат_факты: Истина
- name: Убедитесь, что установлено имя интерфейса
потерпеть поражение:
msg: "Не удалось определить имя target_vm!"
когда: target_vm не определен
- имя: вывод на печать
отлаживать:
msg: «Имя виртуальной машины: {{ target_vm }}»
это результат
ЗАДАЧА [vmwaretaks: Получить имя ВМ по UUID] ******************************************* ****************************************************
ok: [testvm] => (item={'guest_name': 'TESTVM', 'guest_fullname': 'Red Hat Enterprise Linux 6 (64-разрядная версия)', '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', 'кластер': 'JAS-Lab-DEP', 'атрибуты': {}, 'теги': []}) => {"ansible_facts": {"target_vm": "TESTVM"}, " ansible_loop_var": "my_item", "changed": false, "my_item": {"attributes": {}, "cluster": "JAS-Lab-DEP", "esxi_hostname": "b3j15esx05.bio.local", " guest_fullname": "Red Hat Enterprise Linux 6 (64-разрядная версия)", "guest_name": "TESTVM", "ip_address": "192.168.54.32", "mac_address": ["00:32:52:97:e9: c8"], "power_state": "poweredOn", "tags": [], "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"]}}}}
ЗАДАЧА [vmwaretaks: проверьте, установлено ли имя интерфейса] ********************************************** *******************************************
фатальный: [testvm]: FAILED! => {"changed": false, "msg": "Не удалось определить имя target_vm!"}
ОБЗОР ИГРЫ ******************************************************* ******************************************************* ********************
testvm : ok=13 изменено=0 недостижимо=0 не удалось=1 пропущено=2 спасено=0 проигнорировано=0