#ansible #vmware
Вопрос:
Одно из многих Ансибельных сообществ.Параметры модулей VMware-это «имя хоста», которое является именем сервера ESXi.
В моем случае гость может находиться на одном из нескольких серверов ESXi (на данный момент 8), а также новый сервер может быть добавлен службой поддержки в любое время.
Есть ли способ узнать, на каком сервере ESXi находится гость? Или это обязательно, чтобы я знал это с самого начала?
У меня мог бы быть список серверов ESXi, продолжать обновлять его по требованию и просматривать этот список, используя модуль «community.vmware.vmware_guest_find» и «with_items», но на самом деле я не знаю, как бы я это сделал (перебираю серверы, меняю «имя хоста» и останавливаюсь, когда наконец нахожу гостя).
Какая-нибудь помощь?
Ответ №1:
Я придумал это решение ниже. Необходимо предварительно иметь список хостов ESXi.
[...] vars: vcenters_hostname: - vcenter01 - vcenter02 - ... [...] - block: - name: Navigate throughout all vcenters looking for the guest community.vmware.vmware_guest_find: hostname: "{{ item }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" name: "{{ guest_name }}" validate_certs: no delegate_to: localhost register: guest_find_result with_items: "{{ vcenter_hostnames }}" rescue: - name: Doing nothing only to don't raise a fail message meta: noop always: - name: Record which vcenter and folder is the guest ansible.builtin.set_fact: guest_folder: "{{ item['folders'][0] }}" vcenter_hostname: "{{ item['item'] }}" with_items: "{{ guest_find_result['results'] }}" when: item['failed'] == false