Możesz użyć Ansible do zautomatyzowania niektórych zadań w infrastrukturze VMware. Możesz automatycznie wdrażać i konfigurować hosty ESXi, zarządzać ustawieniami sieciowymi, uruchamiać, zatrzymywać lub usuwać maszyny wirtualne, wdrażać maszyny wirtualne z szablonów, instalować aktualizacje na hostach ESXi itp. W tym poście wyjaśniono, jak rozpocząć korzystanie z Ansible do zarządzania środowiskiem VMware.
Ansible posiada dużą liczbę modułów do zarządzania infrastrukturą VMware i większość z nich opiera się napyVmomi(pakiet SDK języka Python, który umożliwia połączenie z interfejsem API VMware vSphere). Zainstaluj pyVmomi za pomocą menedżera pip:
$ sudo pip install pyvmomi


Zakładamy, że masz już hosta z systemem Linux i zainstalowanym rozwiązaniem Ansible.
Aby umożliwić korzystanie z wtyczki dynamicznego spisu VMware, włączvmware_vm_inventoryWansible.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 protected] password: pas1swsew43 validate_certs: False with_tags: True
Następnie możesz uruchomić polecenie Inventory i uzyskać listę maszyn wirtualnych na serwerze vCenter lub ESXi.
$ ansible-inventory --list -i /etc/ansible/vmware/vmware.yml
Możesz uzyskać hierarchiczną listę maszyn wirtualnych:
$ ansible-inventory --graph -i /etc/ansible/vmware/vmware.yml


Dodajmy listę Twoich hostów ESXi do/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
Ustaw wartości zmiennych dla tej grupy hostów:
[all_esxi_hosts:vars] ansible_user=root ansible_python_interpreter=/bin/python ansible_ssh_pass=P1ssw0rd6


W tym przykładzie hasło roota hosta ESXi jest podane zwykłym tekstem. Zaleca się skonfigurowanie uwierzytelniania opartego na kluczu SSH w ESXi w środowisku produkcyjnym.
Następnie możesz sprawdzić, czy wszystkie hosty ESXi są dostępne z hosta Ansible przez sieć:
$ ansible all_esxi_hosts -m ping
Możesz interaktywnie zapytać o hasło, jeśli nie zostało ono określone w pliku hosts:
$ ansible all_esxi_hosts -m ping --ask-pass


Dzięki Ansible możesz uruchomić dowolne polecenie na wszystkich hostach ESXi. Tryb poleceń ad-hoc Ansible służy do wykonywania poleceń na zdalnym ESXi. Na przykład możesz chcieć poznać numer wersji ESXi wszystkich swoich hostów:
$ ansible all_esxi_hosts -m shell -a "vmware -vl"


W ten sposób możesz uruchomić dowolne polecenie powłoki na dowolnym hoście (w ESXi musi być włączone SSH).
Stwórzmy prosty podręcznik Ansiblevm_start.ymlaby włączyć określoną maszynę wirtualną w VMware vCenter. Ten podręcznik używa danych uwierzytelniających połączenia zvmware_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
Uruchom podręcznik:
$ ansible-playbook /etc/ansible/vmware/vm_start.yml


Otwórz klienta vSphere i sprawdź, czy maszyna wirtualna została pomyślnie uruchomiona.

Następny podręcznik umożliwia włączenie usługi ntpd na określonym hoście ESXi. Zainstaluj moduł Community.vmware przed użyciem tego Poradnika:
$ ansible-galaxy collection install community.vmware
Teraz utwórz podręcznik (określiliśmy parametry połączenia bezpośrednio w podręczniku, aby było to łatwiejsze do zrozumienia):
---
- hosts: localhost
vars:
vcenter_hostname: "192.168.31.20"
vcenter_user: "[email protected]"
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
Uruchom swój podręcznik:
$ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.yml
Należy pamiętać, że bezpłatnych ustawień VMware Hypervisor nie można zmienić z poziomu Ansible. W tej wersji interfejsy API ESXi są tylko do odczytu.
W tym poście omówiliśmy podstawy używania Ansible do zarządzania VMware ESXi, vCenter i maszynami wirtualnymi w środowisku vSphere.
W poprzednim artykule pokazaliśmy, jak używać Ansible do zarządzania hostami Windows.
Polecana lektura:VMware vs VirtualBox: kompletny przewodnik









