Zarządzanie infrastrukturą VMware za pomocą Ansible

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

Related Posts