Ehrlich gesagt ist die Einrichtung von Ansible für die VMware-Verwaltung nicht ganz einfach, insbesondere für Skripting-Neulinge oder alle, die ihre Hosts verwalten möchten, ohne ständig den vSphere Client zu öffnen. Hat man den Dreh aber erst einmal raus, spart die Automatisierung von Vorgängen wie der Bereitstellung von VMs, der Versionsprüfung oder dem Starten/Stoppen von Diensten enorm viel Zeit. Ein kleiner Hinweis: Die Konfiguration ist anfangs etwas knifflig, aber mit den richtigen Schritten lässt sich die Verwaltung mehrerer ESXi-Hosts oder vCenter mit einem einzigen Befehl oder Playbook ziemlich komfortabel gestalten. Letztendlich können Sie VMs einschalten oder Dienste auf Ihren Hosts aktivieren, ohne sich endlos durch die Web-GUI klicken zu müssen. Allerdings sollten Sie mit Scans, Konfigurationsbearbeitungen und vielleicht auch etwas Frust rechnen – denn die VMware-API ist nicht gerade benutzerfreundlich.
Wie man VMware-Aufgaben mit Ansible automatisiert
Stellen Sie sicher, dass Python und pyVmomi installiert sind.
- Installieren Sie auf Ihrem Linux-Steuerungsrechner pyVmomi, das Python SDK, von dem VMware-Module abhängen. Normalerweise genügt ein einfacher Befehl
$ sudo pip install pyvmomi. Ich habe jedoch ein- oder zweimal erlebt, dass dies auf älteren Distributionen fehlschlug, wenn pip nicht aktuell war. Aktualisieren Sie pip daher gegebenenfalls zuerst. - Stellen Sie sicher, dass Ansible ebenfalls eingerichtet ist – viele Distributionen haben es in ihren Repositories, aber die neueste Version ist in der Regel besser.
Konfigurieren Sie die ansible.cfg, um das VMware-Inventarisierungs-Plugin zu aktivieren.
- Hier weisen Sie Ansible an, das VMware-Plugin zu erkennen.Öffnen Sie die Datei `/etc/ansible/ansible.cfg` und fügen Sie die folgende Zeile hinzu oder bestätigen Sie sie:
[Inventar] enable_plugins = vmware_vm_inventory, host_list, script, auto, yaml, ini, toml
/etc/ansible/vmware/vmware.yml) mit Ihren vCenter- oder ESXi-Details. Hier liegt oft das Problem – Sie müssen Ansible mitteilen, wie die Verbindung hergestellt werden soll:--- Plugin: vmware_vm_inventory strikt: Falsch Hostname: 192.168.13.70 Benutzername: [email protected] Passwort: pas1swsew43 validate_certs: False mit_Tags: Wahr
Tipp: Setzen Sie validate_certs auf False, wenn Sie selbstsignierte Zertifikate verwenden – andernfalls schlägt die Authentifizierung fehl.
Listen Sie Ihre VMs und Ihre ESXi-Hosts auf.
- Um alle Ihre VMs anzuzeigen, führen Sie folgenden Befehl aus:
$ ansible-inventory --list -i /etc/ansible/vmware/vmware.yml
$ ansible-inventory --graph -i /etc/ansible/vmware/vmware.yml
Nützlich, um zu überprüfen, ob Ihre Inventardatei funktioniert und Sie mit den richtigen Servern kommunizieren. Warnung: Manchmal funktioniert der Inventarisierungsbefehl nicht richtig, wenn Ihre Anmeldeinformationen oder Ihr Netzwerk instabil sind. Führen Sie ihn einfach erneut aus, nachdem Sie verbliebene SSH-Probleme oder Zertifikatswarnungen behoben haben.
Hinzufügen Ihrer ESXi-Hosts zu /etc/ansible/hosts
- Die meisten Leute fügen sie lieber so hinzu:
[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
Achtung: Das Passwort liegt hier im Klartext vor, was nicht optimal ist. Für mehr Sicherheit sollten Sie SSH-Schlüssel auf Ihren ESXi-Hosts einrichten, aber das ist ein ganz anderes Thema.
Testverbindung
- Stellen Sie sicher, dass alle Hosts über das Netzwerk antworten:
$ ansible all_esxi_hosts -m ping
--ask-passbeim nächsten Mal die entsprechende Option hinzufügen – alternativ vereinfacht die SSH-Schlüsselauthentifizierung die Sache.Hier erhalten Sie die beruhigende Bestätigung „OK“, dass Ihr Netzwerk und Ihre Zugangsdaten sicher sind.
Befehle auf allen ESXi-Hosts ausführen
- Neugierig auf Ihre ESXi-Version? Führen Sie einfach folgenden Befehl aus:
$ ansible all_esxi_hosts -m shell -a "vmware -vl"
Automatisieren Sie VM-Operationen mit Playbooks
- Hier ist ein Beispiel für ein Playbook vm_start.yml zum Starten einer VM namens „munfs01“ in vCenter. Stellen Sie sicher, dass Ihre Anmeldeinformationen in vmware_vars.yml korrekt sind und dass Sie die Community-VMware-Sammlung installiert haben.
- Name: VM starten Hosts: localhost Fakten sammeln: false Sammlungen: - community.vmware vars_files: - vmware_vars.yml Aufgaben: - Name: Einschalten vmware_guest_powerstate: Hostname: "{{ Hostname }}" Benutzername: "{{ Benutzername }}" Passwort: "{{ Passwort }}" Name: munfs01 validate_certs: "{{ validate_certs }}" Status: eingeschaltet
Führen Sie es mit dem Befehl aus $ ansible-playbook /etc/ansible/vmware/vm_start.yml.Überprüfen Sie anschließend Ihren vSphere Client – Ihre VM sollte jetzt gestartet sein. Gibt es Auffälligkeiten? Überprüfen Sie die Protokolle oder Netzwerkkonfigurationen – falls etwas nicht funktioniert, müssen Sie möglicherweise eine Fehlerbehebung durchführen.
Dienste auf ESXi im Handumdrehen aktivieren
- Hier ist ein praktischer Codeausschnitt zum Aktivieren von NTP auf ESXi-Hosts:
--- - hosts: localhost wessen: 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 Aufgaben: - Name: NTP-Dienst starten community.vmware.vmware_host_service_manager: Hostname: "{{ vcenter_hostname }}" Benutzername: "{{ vcenter_user }}" Passwort: "{{ vcenter_password }}" esxi_hostname: "{{ esxi_hostname }}" Dienstname: ntpd Zustand: gegenwärtig Servicerichtlinie: Aus validate_certs: nein delegate_to: localhost
Führen Sie dies mit aus $ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.yml. Nur zur Info: Die kostenlose Version des VMware Hypervisors (ESXi free) hat nur eingeschränkten API-Zugriff, daher funktionieren einige Dinge nicht mit Ansible – wie z. B.das Ändern der Lizenzierung oder bestimmter erweiterter Einstellungen.
Zusätzliche Anmerkungen
Die Einrichtung erfordert etwas Geduld. Die APIs sind nicht immer perfekt, und VMware gibt in der kostenlosen Version nicht immer genau an, welche Einstellungen möglich sind. Sobald es aber funktioniert, macht die Automatisierung von Routineaufgaben süchtig. Erwarten Sie jedoch keine Wunder mit einem Klick. Für komplexere Automatisierungen schauen Sie sich das GitHub-Repository Winhance an.
Hoffentlich spart Ihnen das einige Stunden bei der Verwaltung Ihrer VMware-Umgebung. Nichts ist besser, als einen guten Leitfaden parat zu haben, wenn man ihn braucht.
Zusammenfassung
- Installieren Sie pyVmomi und konfigurieren Sie Ihre ansible.cfg-Datei.
- VMware-Inventar konfigurieren und Verbindung überprüfen
- Fügen Sie Ihre ESXi-Hosts Ihrem Inventar hinzu.
- Führen Sie Befehle oder Playbooks aus, um VMs und Dienste zu verwalten.
- Sicherheitsaspekte beachten: SSH-Schlüssel sind herkömmlichen Passwörtern vorzuziehen.
Zusammenfassung
Sobald die Einrichtung abgeschlossen ist, kann die Verwaltung mehrerer ESXi-Hosts und VMs mit Ansible die Arbeit deutlich erleichtern. Es ist nicht perfekt, und die VMware-API wirkt manchmal etwas eingeschränkt – insbesondere in der kostenlosen Version. Insgesamt lohnt sich der Aufwand aber, wenn Automatisierung Ihr Ding ist. Rechnen Sie einfach mit etwas Ausprobieren und vielleicht auch mal einem Moment, in dem Sie ratlos sind. Hoffentlich hilft dies jemandem, ein paar Stunden zu sparen oder sich später viel Ärger zu ersparen.