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

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago