Hoe u het beheer van uw VMware-infrastructuur kunt vereenvoudigen met Ansible

Eerlijk gezegd is het instellen van Ansible voor VMware-beheer niet bepaald eenvoudig, vooral als je nieuw bent in scripten of gewoon je hosts wilt beheren zonder constant de vSphere-client te hoeven openen. Maar als je het eenmaal onder de knie hebt, kan het automatiseren van taken zoals het implementeren van VM’s, het controleren van versies of het starten/stoppen van services enorm veel tijd besparen. Even een waarschuwing: het is in het begin best lastig om alles te configureren, maar als je de juiste stappen volgt, zul je merken dat het beheren van meerdere ESXi-hosts of vCenter met één commando of playbook heel soepel verloopt. Uiteindelijk kun je dingen doen zoals VM’s inschakelen of services activeren op je hosts zonder eindeloos te hoeven klikken in de webinterface. Houd er wel rekening mee dat je wat moet scannen, configuraties moet bewerken en misschien wat frustratie zult ervaren – want de API van VMware is nu eenmaal niet super gebruiksvriendelijk.

Hoe automatiseer je VMware-taken met Ansible?

Zorg ervoor dat Python en pyVmomi zijn geïnstalleerd.

  • Installeer pyVmomi op je Linux-besturingsmachine. Dit is de Python SDK waar VMware-modules van afhankelijk zijn. Normaal gesproken hoef je alleen maar `pyvmomi` uit te voeren $ sudo pip install pyvmomi. Ik heb het een of twee keer zien mislukken op oudere distributies waar pip niet is bijgewerkt, dus werk pip eerst bij als dat nodig is.
  • Zorg er ook voor dat Ansible is geïnstalleerd — veel distributies hebben het in hun repositories, maar de nieuwste versie is meestal beter.

Configureer het ansible.cfg- bestand om de VMware-inventarisatieplug-in in te schakelen.

  • Hier geef je Ansible de opdracht om de VMware-plugin te herkennen. Open /etc/ansible/ansible.cfg en voeg de volgende regel toe of bevestig deze:
[inventaris] enable_plugins = vmware_vm_inventory, host_list, script, auto, yaml, ini, toml
  • Maak nu een nieuw inventaris-YAML-bestand aan (bijvoorbeeld /etc/ansible/vmware/vmware.yml) met de gegevens van uw vCenter of ESXi. Hier gaat het vaak mis: u moet Ansible vertellen hoe verbinding te maken:
  • --- plugin: vmware_vm_inventory strikt: Onwaar hostnaam: 192.168.13.70 gebruikersnaam: [email protected] wachtwoord: pas1swsew43 certificaten valideren: False met_tags: Waar 

    Tip: stel validate_certs in op False als u zelfondertekende certificaten gebruikt; anders mislukt de authenticatie.

    Geef een lijst van uw VM’s en uw ESXi-hosts.

    • Om al je virtuele machines te bekijken, voer je het volgende commando uit:
    $ ansible-inventory --list -i /etc/ansible/vmware/vmware.yml
  • Voor een overzichtelijke hiërarchische weergave kunt u het volgende proberen:
  • $ ansible-inventory --graph -i /etc/ansible/vmware/vmware.yml

    Handig om te controleren of uw inventarisbestand werkt en of u met de juiste servers communiceert. Waarschuwing: Soms werkt de inventarisopdracht niet goed als uw inloggegevens of netwerk instabiel zijn. Voer de opdracht opnieuw uit nadat u eventuele resterende SSH-problemen of certificaatwaarschuwingen hebt opgelost.

    Je ESXi-hosts toevoegen aan /etc/ansible/hosts

    • De meeste mensen voegen ze het liefst als volgt toe:
    [alle_esxi_hosts] esxi1 ansible_host=192.168.31.20 esxi2 ansible_host=192.168.31.21 esxi3 ansible_host=192.168.31.22 
  • En definieer vervolgens hun inloggegevens:
  • [all_esxi_hosts:vars] ansible_user=root ansible_python_interpreter=/bin/python ansible_ssh_pass=P1ssw0rd6 

    Let op: het wachtwoord staat hier in platte tekst, wat niet ideaal is. Voor betere beveiliging kunt u SSH-sleutels instellen op uw ESXi-hosts, maar dat is een heel ander project.

    Test de connectiviteit

    • Zorg ervoor dat alle hosts via het netwerk reageren:
    $ ansible all_esxi_hosts -m ping
  • Als er om een ​​wachtwoord wordt gevraagd, kun je de --ask-passvlag de volgende keer toevoegen, of SSH-sleutelverificatie maakt het een stuk eenvoudiger.
  • Hier krijg je die geruststellende “OK”-bevestiging dat je netwerk en inloggegevens in orde zijn.

    Voer opdrachten uit op alle ESXi-hosts.

    • Benieuwd welke ESXi-versie je gebruikt? Voer dan het volgende commando uit:
    $ ansible all_esxi_hosts -m shell -a "vmware -vl"
  • Je kunt via SSH alles uitvoeren wat toegankelijk is, zoals het herstarten van het netwerk of het controleren van systeeminformatie.Meestal werkt het, maar let op SSH-beperkingen of aangepaste instellingen die bepaalde commando’s kunnen blokkeren.
  • Automatiseer VM-bewerkingen met playbooks.

    • Hier is een voorbeeld van een playbook vm_start.yml om een ​​VM met de naam “munfs01” in vCenter op te starten. Zorg ervoor dat uw inloggegevens in vmware_vars.yml correct zijn en dat u de community.vmware-collectie hebt geïnstalleerd.
    - naam: start vm hosts: localhost feiten verzamelen: onjuist collecties: - community.vmware vars_files: - vmware_vars.yml taken: - naam: inschakelen vmware_guest_powerstate: hostnaam: "{{ hostnaam }}" gebruikersnaam: "{{ gebruikersnaam }}" wachtwoord: "{{ wachtwoord }}" naam: munfs01 certificaten valideren: "{{ certificaten valideren }}" status: ingeschakeld 

    Voer het uit met $ ansible-playbook /etc/ansible/vmware/vm_start.yml. Controleer vervolgens uw vSphere Client — uw VM zou nu opgestart moeten zijn. Is er hier niets aan de hand? Controleer dan de logboeken of netwerkconfiguraties; mogelijk moet u problemen oplossen als er niets gebeurt.

    Schakel services op ESXi in een handomdraai in

    • Hier is een handig voorbeeld van een playbook om NTP in te schakelen op ESXi-hosts:
    --- - hosts: localhost waarvan: vcenter_hostname: "192.168.31.20" vcenter_user: [email protected] vcenter_wachtwoord: passwprd123 esxi_hostname: 192.168.31.50 esxi_gebruikersnaam: root esxi_wachtwoord: es-122023 taken: - naam: Start NTP-service community.vmware.vmware_host_service_manager: hostnaam: "{{ vcenter_hostname }}" gebruikersnaam: "{{ vcenter_user }}" wachtwoord: "{{ vcenter_password }}" esxi_hostname: "{{ esxi_hostname }}" service_name: ntpd staat: heden service_policy: off certificaten valideren: nee gedelegeerde_aan: localhost 

    Voer dit uit met $ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.yml. Let op: de gratis VMware Hypervisor (ESXi free) versie heeft beperkte API-toegang, waardoor sommige functies niet werken vanuit Ansible, zoals het wijzigen van licenties of bepaalde geavanceerde instellingen.

    Extra notities

    Het instellen vergt wat geduld. Houd er rekening mee dat de API’s niet altijd perfect zijn en dat VMware niet altijd even duidelijk aangeeft wat je precies kunt aanpassen met de gratis versie. Maar als het eenmaal werkt, is het automatiseren van routinetaken best verslavend. Verwacht alleen geen wonderen met één klik. Voor complexere automatisering kun je de GitHub-repository Winhance bekijken.

    Hopelijk scheelt dit je een paar uur in het beheren van je VMware-spullen. Niets is beter dan een goed draaiboek bij de hand hebben wanneer je het nodig hebt.

    Samenvatting

    • Installeer pyVmomi en configureer je ansible.cfg.
    • Configureer de VMware-inventaris en controleer de verbinding.
    • Voeg uw ESXi-hosts toe aan uw inventaris.
    • Voer opdrachten of playbooks uit om VM’s en services te beheren.
    • Houd rekening met de beveiliging: geef de voorkeur aan SSH-sleutels boven gewone wachtwoorden.

    Samenvatting

    Als de installatie eenmaal is voltooid, kan het beheren van een groot aantal ESXi-hosts en VM’s met Ansible je leven een stuk gemakkelijker maken. Het is niet perfect, en soms voelt de VMware API…beperkt aan — vooral met de gratis versie. Maar over het algemeen is het de moeite waard als automatisering je ding is. Verwacht wel wat vallen en opstaan, en misschien een paar momenten waarop je je hoofd breekt. Hopelijk helpt dit iemand een paar uur te besparen of een hoop kopzorgen in de toekomst te voorkomen.