Использование Ansible для управления инфраструктурой VMware

Вы можете использовать Ansible для автоматизации некоторых задач в вашей инфраструктуре VMware. Можно автоматизировать настройку ESXi хостов, управлять сетевыми настройками, запускать, останавливать и удалять ВМ, разворачивать виртуальные машины из шаблонов, устанавливать обновления на хостах ESXi и тд. В этой статье мы покажем, как начать использовать Ansible для управления средой VMware.

Итак, предполагаем, что у вас уже установлен хост с Ansible (в нашем примере это сервер с Ubuntu 22.04).

В предыдущей статье мы показали, как использовать Ansible для управления хостами Windows .

В Ansible есть большое количество модулей для управления инфраструктурой VMware, подавляющее большинство из них основаны на pyVmomi (Python SDK, позволяющий использовать VMware vSphere API). Установите pyVmomi с помощью менеджера pip:

$ sudo pip install pyvmomi

Чтобы разрешить использовать плагин динамической инвентаризации VMware, включите плагин vmware_vm_inventory в конфигурационном файле ansible.cfg:

[inventory]_x000D_enable_plugins = vmware_vm_inventory, host_list, script, auto, yaml, ini, toml

Теперь создайте простой vmware_vars.yml файл, который содержит переменные для доступа к vCenter/ отдельно стоящему хосту ESXi:

plugin: vmware_vm_inventory strict: False hostname: 192.168.13.70 username: [email protected] password: passwprd732@ validate_certs: False with_tags: True

Теперь вы можете выполнить команду инвентаризации и получить список виртуальных машин на сервере vCenter или ESXi.

$ ansible-inventory --list -i /etc/ansible/vmware/vmware.yml

Можно представить список ВМ в иерархической форме:

$ ansible-inventory --graph -i /etc/ansible/vmware/vmware.yml

Добавим список ваших хостов ESXi в файл /etc/ansible/hosts:

[all_esxi_hosts]
esxi1 ansible_host=192.168.13.50
esxi2 ansible_host=192.168.13.51
esxi3 ansible_host=192.168.13.52

Задайте значения переменных для этой группы хостов:

[all_esxi_hosts:vars]
ansible_user=root
ansible_python_interpreter=/bin/python
ansible_ssh_pass=P@ssw0rdd

В этом примере мы указали пароль root для подключения к хостам ESXi в открытом виде. В продуктивной среде нужно настроить SSH аутентификацию на ESXi.

Теперь вы можете проверить доступность всех ESXi:

$ ansible all_esxi_hosts -m ping

Если вы не сохраняли пароль в файле hosts, можно запросить его интерактивно:

$ ansible all_esxi_hosts -m ping --ask-pass

Черех Ansible вы можете выполнить любые команды на всех ваших ESXi хостах. Для запуска команды на удаленных ESXi используется режим команд Ansible ad-hoc. Например, вы хотите получить версию ESXi на всех хостах:

$ ansible all_esxi_hosts -m shell -a "vmware -vl"

Таким образом можно запустить любую shell команду на всех хостах (на ESXi должен быть включен SSH ).

Теперь создадим простой плейбук Ansible vm_start.ymlдля включения определенной виртуальной машины на vCenter. Данный плейбук будет использовать учетные данные для подключения из файла vmware_vars.yml

- name: start vm _x000D_ hosts: localhost_x000D_ become: false_x000D_ gather_facts: false_x000D_ collections:_x000D_ - community.vmware_x000D_ pre_tasks:_x000D_ - include_vars: vmware_vars.yml_x000D_ tasks:_x000D_ - name: power on_x000D_ vmware_guest_powerstate:_x000D_ hostname: "{{ hostname }}"_x000D_ username: "{{ username }}"_x000D_ password: "{{ password }}"_x000D_ name: msk-srv01_x000D_ validate_certs: "{{ validate_certs }}"_x000D_ state: powered-on

Запустите плейбук:

$ ansible-playbook /etc/ansible/vmware/vm_start.yml

Откройте vSphere клиент и проверьте, что ваша ВМ была успешно запущена.

Следующий плейбук позволяет включить службу ntpd на определенном хосте ESXi. Перед использованием плейбука нужно установить набор модулей community.vmware:

$ ansible-galaxy collection install community.vmware

Теперь создайте плейбук (в этом примере мы указали параметры подключения прямо в плейбуке для простоты понимания):

---_x000D_- hosts: localhost_x000D_ vars:_x000D_ vcenter_hostname: "192.168.13.70"_x000D_ vcenter_user: "[email protected]"_x000D_ vcenter_password: "passwprd73!"_x000D_ esxi_hostname: "192.168.13.50"_x000D_ esxi_username: "root"_x000D_ esxi_password: "m-032023"_x000D_ tasks: _x000D_ - name: Start Service on esxi host in vcenter_x000D_ community.vmware.vmware_host_service_manager:_x000D_ hostname: "{{ vcenter_hostname }}"_x000D_ username: "{{ vcenter_user }}"_x000D_ password: "{{ vcenter_password }}"_x000D_ esxi_hostname: "{{ esxi_hostname }}"_x000D_ service_name: ntpd_x000D_ state: present #present #absent_x000D_ service_policy: off _x000D_ validate_certs: no_x000D_ delegate_to: localhost_x000D_

Запустите плейбук:

$ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.yml

Обратите внимание, что вы не сможете изменить настройки бесплатного VMware Hypervisor из Ansible. В этой редакции ESXi API доступны только на чтение.

В этой статье мы рассмотрели основы использования Ansible для управления средой VMware.

admin

Share
Published by
admin

Recent Posts

После включения диагностического запуска не удается войти в Windows — как исправить?

Некоторые пользователи, экспериментируя с конфигурацией системы в окне msconfig могут столкнуться с ситуацией, когда после…

1 неделя ago

WinScript — очистка и настройка Windows 11 и 10

На сайте не раз публиковались обзоры программ, предназначенных для очистки или настройки последних версий Windows.…

1 неделя ago

Предварительный просмотр накопительного обновления не устанавливается — решение

При установке некоторых обновлений Windows 11, имеющих в названии «Предварительный просмотр накопительного обновления», многие пользователи…

1 неделя ago

FixExec — восстановление ассоциаций .exe, .bat и .com файлов

Некоторые пользователи Windows 11, 10 и предыдущих версий системы могут столкнуться с ситуацией, когда исполняемые…

1 неделя ago

Ошибка 0x800705b4 при обновлении Windows 11 и 10 — как исправить?

При установке обновлений Windows 11/10 некоторые пользователи могут столкнуться с ошибкой с кодом 0x800705b4 и…

1 неделя ago

Обслуживание вашей версии Windows 11 окончено — что делать?

Пользователи Windows 11 могут столкнуться с сообщением «Обслуживание вашей версии Windows окончено» (Your version of…

1 неделя ago