Ansible — vmware: как найти гостя в центре с несколькими хостами?

#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