Управление инфраструктурой VMware с помощью Ansible
Вы можете использовать Ansible для автоматизации некоторых задач в вашей инфраструктуре VMware. Вы можете автоматически развертывать и настраивать хосты ESXi, управлять настройками сети, запускать, останавливать или удалять виртуальные машины, развертывать виртуальные машины из шаблонов, устанавливать обновления на хосты ESXi и т. д. В этом посте объясняется, как начать использовать Ansible для управления вашим VMware. среда.
Ansible имеет большое количество модулей для управления инфраструктурой VMware, и большинство из них основаны на pyVmomi (Python SDK, который позволяет подключаться к VMware vSphere API). Установите pyVmomi с помощью pip-менеджера:
$ sudo pip install pyvmomiМы предполагаем, что у вас уже есть хост Linux с установленным Ansible.
Чтобы разрешить использование плагина динамической инвентаризации VMware, включите
vmware_vm_inventory
в ansible.cfg:
[inventory]
enable_plugins = vmware_vm_inventory, host_list, script, auto, yaml, ini, toml
vmware_vars
plugin: vmware_vm_inventory
strict: False
hostname: 192.168.13.70
username: [email
password: pas1swsew43
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.31.20
esxi2 ansible_host=192.168.31.21
esxi3 ansible_host=192.168.31.22Установите значения переменных для этой группы хостов:
[all_esxi_hosts:vars]
ansible_user=root
ansible_python_interpreter=/bin/python
ansible_ssh_pass=P1ssw0rd6В этом примере пароль root хоста ESXi указан в виде открытого текста. Рекомендуется настроить аутентификацию на основе ключей SSH на ESXi в производственной среде.
Затем вы можете убедиться, что все хосты ESXi доступны с хоста Ansible по сети:
$ ansible all_esxi_hosts -m pingВы можете интерактивно запросить пароль, если вы не указали его в файле хостов:
$ ansible all_esxi_hosts -m ping --ask-pass
С помощью Ansible вы можете запускать любую команду на всех ваших хостах ESXi. Специальный командный режим Ansible используется для выполнения команды на удаленном ESXi. Например, вам может потребоваться узнать номер версии ESXi всех ваших хостов:
$ ansible all_esxi_hosts -m shell -a "vmware -vl"Таким образом, вы можете запустить любую команду оболочки на любом из хостов (на ESXi должен быть включен SSH).
Давайте создадим простой сборник сценариев Ansible vm_start.yml для включения определенной виртуальной машины в VMware vCenter. В этом сборнике пьес используются учетные данные подключения из
vmware_vars.yml- name: start vm
hosts: localhost
become: false
gather_facts: false
collections:
- community.vmware
pre_tasks:
- include_vars: vmware_vars.yml
tasks:
- name: power on
vmware_guest_powerstate:
hostname: "{{ hostname }}"
username: "{{ username }}"
password: "{{ password }}"
name: munfs01
validate_certs: "{{ validate_certs }}"
state: powered-on
Запустите плейбук:
$ ansible-playbook /etc/ansible/vmware/vm_start.ymlОткройте клиент vSphere и убедитесь, что ваша виртуальная машина успешно запустилась.
Следующая инструкция позволяет вам включить службу ntpd на конкретном хосте ESXi. Прежде чем использовать это руководство, установите модуль Community.vmware:
$ ansible-galaxy collection install community.vmware
Теперь создайте плейбук (чтобы облегчить понимание, мы указали параметры подключения непосредственно в плейбуке):
---
- hosts: localhost
vars:
vcenter_hostname: "192.168.31.20"
vcenter_user: "[email "
vcenter_password: "passwprd123"
esxi_hostname: "192.168.31.50"
esxi_username: "root"
esxi_password: "es-122023"
tasks:
- name: Start Service on esxi host in vcenter
community.vmware.vmware_host_service_manager:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_password }}"
esxi_hostname: "{{ esxi_hostname }}"
service_name: ntpd
state: present #present #absent
service_policy: off
validate_certs: no
delegate_to: localhost
Запустите свою пьесу:
$ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.ymlОбратите внимание, что бесплатные настройки VMware Hypervisor нельзя изменить из Ansible. В этой версии API ESXi доступны только для чтения.
В этом посте мы рассмотрели основы использования Ansible для управления VMware ESXi, vCenter и виртуальными машинами в среде vSphere.
В предыдущей статье мы показали вам, как использовать Ansible для управления хостами Windows.






