Поиск по сайту:

Управление инфраструктурой 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.

Статьи по данной тематике