Ansible - vmware:如何在多个主机 vcenter 上找到来宾?
Ansible - vmware: how to find a guest on a multiple hosts vcenter?
许多 Ansible Community.VMWare 模块参数之一是 'hostname',这是 ESXi 服务器的名称。
在我的例子中,来宾可以位于多个 ESXi 服务器之一(目前为 8 个),支持团队也可以随时添加新服务器。
有没有办法找到来宾在哪个 ESXi 服务器上?还是我一开始就必须知道这一点?
我可以有一个 ESXi 服务器列表,按需不断更新它,并使用模块 'community.vmware.vmware_guest_find' 和“with_items”循环遍历此列表,但实际上,我不知道我该怎么做(遍历服务器,更改 'hostname',并在我终于找到客人时停止)。
有什么帮助吗?
我在下面想出了这个解决方案。之前有 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
许多 Ansible Community.VMWare 模块参数之一是 'hostname',这是 ESXi 服务器的名称。
在我的例子中,来宾可以位于多个 ESXi 服务器之一(目前为 8 个),支持团队也可以随时添加新服务器。
有没有办法找到来宾在哪个 ESXi 服务器上?还是我一开始就必须知道这一点?
我可以有一个 ESXi 服务器列表,按需不断更新它,并使用模块 'community.vmware.vmware_guest_find' 和“with_items”循环遍历此列表,但实际上,我不知道我该怎么做(遍历服务器,更改 'hostname',并在我终于找到客人时停止)。
有什么帮助吗?
我在下面想出了这个解决方案。之前有 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