Использование 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

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

1 неделя ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

3 недели ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

3 недели ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

3 недели ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

3 недели ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

3 недели ago