dynamisches Host Inventar für Ansible

18. Dezember 2019 at 23:48

Hallo,

Aus einem Business Need heraus musste ich ein dynamisches Host Inventar für Ansible entwickeln.

Sollten Sie nicht wissen was Ansible ist, empfehle ich Ihnen die offizielle Webseite: https://www.ansible.com/ Einfach gesagt ist Ansible ein Orchestrierungstool für Anwendungen aller Art.

Dieses Modul verbindet sich auf ein vCenter und liest die ESXi-Server aus. Diese werden im Anschluss als Inventar zur Verfügung gestellt. Darüber hinaus können die Server nach verschiedenen Kriterien gruppiert werden. So können Sie entscheiden ob Sie die Hosts nach Cluster oder Datacenter gruppieren möchten.
Als Basis verwendete ich das offizielle Modul ‘vmware_vm_inventory’. Dies erleichterte die Entwicklung, da ich so einen Teil weiterverwenden konnte. Das Modul steht unter der GPLv3, womit Sie das Modul auch in eigenen Projekten verwenden dürfen.

Das Modul kann dort heruntergeladen werden: vmware_host_inventory

Damit das Modul funktioniert, benötigt es eine statische Inventardatei, welche auf diese Namen enden muss: vmware.yml, vmware.yaml, vmware_host_inventory.yml, oder vmware_host_inventory.yaml.
Die Datei benötigt mindestens diesen Inhalt:

Sie können die folgenden Einstellungen nutzen:

Name Zweck Standard
hostname Hostname oder IP des vCenter leer
username Nutzername für das vCenter leer
password Passwort für das vCenter leer
validate_certs Zertifikate validieren? True
with_tags Tags berücksichtigen? False
properties Liste an Eigenschaften für die Hosts
  • Name
  • summary.runtime.connectionState
  • summary.runtime.inMaintenanceMode
group_by_cluster Gruppiere nach Cluster? False
group_by_datacenter Gruppiere nach Datacenter? False
group_by_maintenance Gruppiere nach Wartungsmodus? True

Aufgerufen werden kann das Modul z.B. mit ansible-inventory -i vcenter.vmware.yml --list

Die Beispielausgabe sieht in meinem Fall so aus:

 

Lassen Sie gerne Ihr Feedback als Kommentar hier. Sollten Sie Wünsche und Anregungen haben, freue ich mich darauf diese annehmen zu können.