107 lines
4 KiB
YAML
107 lines
4 KiB
YAML
---
|
||
# Сбор фактов о VMware vSphere инфраструктуре через vCenter API.
|
||
# Не использует SSH — всё выполняется локально через pyVmomi.
|
||
# Результаты сохраняются в vmware_facts/*.json и используются generate_report.py.
|
||
#
|
||
# Запуск:
|
||
# ansible-playbook -i inventory/prod/vmware/ playbooks/gather_facts_vmware.yml
|
||
- name: Сбор фактов VMware vSphere
|
||
hosts: vmware_vcenter
|
||
gather_facts: false
|
||
|
||
vars:
|
||
vmware_output_dir: "{{ playbook_dir }}/../vmware_facts"
|
||
|
||
tasks:
|
||
- name: Создать директорию для хранения VMware фактов
|
||
ansible.builtin.file:
|
||
path: "{{ vmware_output_dir }}"
|
||
state: directory
|
||
mode: "0755"
|
||
delegate_to: localhost
|
||
|
||
- name: Получить информацию о кластерах датацентра
|
||
community.vmware.vmware_cluster_info:
|
||
hostname: "{{ vcenter_hostname }}"
|
||
username: "{{ vcenter_username }}"
|
||
password: "{{ vcenter_password }}"
|
||
validate_certs: "{{ vcenter_validate_certs }}"
|
||
datacenter: "{{ vcenter_datacenter }}"
|
||
register: _cluster_info
|
||
delegate_to: localhost
|
||
failed_when: false
|
||
|
||
- name: Получить системные факты ESXi-гипервизоров
|
||
community.vmware.vmware_host_facts:
|
||
hostname: "{{ vcenter_hostname }}"
|
||
username: "{{ vcenter_username }}"
|
||
password: "{{ vcenter_password }}"
|
||
validate_certs: "{{ vcenter_validate_certs }}"
|
||
esxi_hostname: "{{ item }}"
|
||
register: _esxi_facts
|
||
loop: "{{ vcenter_esxi_hosts }}"
|
||
delegate_to: localhost
|
||
failed_when: false
|
||
|
||
- name: Получить список всех виртуальных машин
|
||
community.vmware.vmware_vm_info:
|
||
hostname: "{{ vcenter_hostname }}"
|
||
username: "{{ vcenter_username }}"
|
||
password: "{{ vcenter_password }}"
|
||
validate_certs: "{{ vcenter_validate_certs }}"
|
||
vm_type: all
|
||
register: _vm_info
|
||
delegate_to: localhost
|
||
failed_when: false
|
||
|
||
- name: Получить информацию о датасторах
|
||
community.vmware.vmware_datastore_info:
|
||
hostname: "{{ vcenter_hostname }}"
|
||
username: "{{ vcenter_username }}"
|
||
password: "{{ vcenter_password }}"
|
||
validate_certs: "{{ vcenter_validate_certs }}"
|
||
datacenter: "{{ vcenter_datacenter }}"
|
||
register: _datastore_info
|
||
delegate_to: localhost
|
||
failed_when: false
|
||
|
||
- name: Сохранить факты кластера в JSON
|
||
ansible.builtin.copy:
|
||
content: "{{ _cluster_info.clusters | default({}) | to_nice_json }}"
|
||
dest: "{{ vmware_output_dir }}/cluster_{{ vcenter_cluster }}.json"
|
||
mode: "0644"
|
||
delegate_to: localhost
|
||
when: _cluster_info is not failed
|
||
|
||
- name: Сохранить факты ESXi-гипервизоров в JSON
|
||
ansible.builtin.copy:
|
||
content: >-
|
||
{{
|
||
item.ansible_facts
|
||
| combine({'esxi_hostname': item.item})
|
||
| to_nice_json
|
||
}}
|
||
dest: "{{ vmware_output_dir }}/esxi_{{ item.item }}.json"
|
||
mode: "0644"
|
||
loop: "{{ _esxi_facts.results }}"
|
||
delegate_to: localhost
|
||
when:
|
||
- item.ansible_facts is defined
|
||
- item is not failed
|
||
|
||
- name: Сохранить список виртуальных машин в JSON
|
||
ansible.builtin.copy:
|
||
content: "{{ _vm_info.virtual_machines | default([]) | to_nice_json }}"
|
||
dest: "{{ vmware_output_dir }}/vms.json"
|
||
mode: "0644"
|
||
delegate_to: localhost
|
||
when: _vm_info is not failed
|
||
|
||
- name: Сохранить информацию о датасторах в JSON
|
||
ansible.builtin.copy:
|
||
content: "{{ _datastore_info.datastores | default([]) | to_nice_json }}"
|
||
dest: "{{ vmware_output_dir }}/datastores.json"
|
||
mode: "0644"
|
||
delegate_to: localhost
|
||
when: _datastore_info is not failed
|