Wenn Sie Windows-Hosts mit Red Hat Ansible Automation Platform verwalten, dann ist dieser Blog genau das Richtige für Sie! Ich möchte das Active Directory Inventory-Plugin hervorheben, mit dem Active Directory als Source of Truth für Ansible Automation Platform genutzt werden kann. Gehen wir zunächst einen Schritt zurück, und betrachten wir die Frage, warum Inventory-Management so wichtig ist.
Ansible Automation Platform wurde als Automatisierungstool entwickelt, das einfach, leistungsstark und agentenlos ist.

Die agentenlose Architektur bietet eine Vielzahl an Automatisierungsmöglichkeiten, da wir nicht nur die Geräte verwalten, auf denen wir Agents installieren können. In dieser agentenlosen Welt wird Inventory-Management zu einem Eckpfeiler für den Erfolg. In der Regel müssen wir Folgendes wissen:
- Welche Geräte müssen wir verwalten? Woher erhalten wir eine aktuelle und korrekte Liste unserer Infrastruktur?
- Wie klassifizieren wir Knoten, damit wir wissen, wie wir sie automatisieren können? Beispielsweise werden für einen Datenbankserver andere Automatisierungsprozesse ausgeführt wie für einen Webserver.
Inventory-Plugins sind eine praktische Lösung für diese Probleme. In ihrer einfachsten Form sind es Skripte, mit denen wir auf eine Source of Truth verweisen können, um eine Liste von Servern und mit allen Merkmalen zu erstellen, die uns helfen könnten, besser zu verstehen, wie sie entsprechend automatisiert werden.
Für das Management einer Microsoft Windows-Umgebung ist Active Directory eine sehr interessante Source of Truth, da Server normalerweise bei einer Domain registriert sind. Dank der Red Hat Ansible Certified Content Collection für Microsoft AD verfügen wir jetzt über zahlreiche Module, die mit Microsoft Active Directory interagieren können, und – was noch wichtiger ist – über ein Inventory-Plugin, das Active Directory als Source of Truth nutzen kann. Mit diesem Inventory-Plugin können Sie Hosts auf Grundlage ihrer Active Directory-Attribute und Gruppenmitgliedschaften filtern und gruppieren.
Sehen wir uns das Plugin in Aktion an.
Mit der Befehlszeile beginnen
Beginnen wir mit der Befehlszeile, indem wir Automation Content Navigator und Ausführungsumgebungen für die Automatisierung verwenden. Anweisungen zur Installation und Konfiguration von Automation Content Navigator finden Sie in der Dokumentation zur Inhaltserstellung. Die unterstützte Ausführungsumgebung von Ansible Automation Platform ab Version 2.4 enthält bereits alles, was wir für eine Integration mit Microsoft Active Directory benötigen: die microsoft.ad- Collection sowie die notwendigen Python-Abhängigkeiten. Bei älteren Releases müssen Sie möglicherweise Ihre Ausführungsumgebung anpassen, um diese Voraussetzungen zu erfüllen.
Glücklicherweise kann das Modul debug_ldap_client verwendet werden, um die erforderlichen Python-Abhängigkeiten sowie die DNS- und Kerberos-Konfiguration zu überprüfen. Da wir eine Ausführungsumgebung für die Automatisierung verwenden, führen wir diese innerhalb des Images aus, um zu überprüfen, ob die erforderlichen Abhängigkeiten für das Inventory-Plugin vorhanden sind. Wir können die Traceback-Fehler ignorieren, da wir nur sicherstellen möchten, dass die Python-Abhängigkeiten für unseren Use Case vorhanden sind.
$ ansible-navigator exec -- ansible localhost -m microsoft.ad.debug_ldap_client
< Output Truncated >
"packages": {
"dnspython": "2.3.0",
"krb5": "0.5.0",
"pyspnego": "0.9.0",
"sansldap": "0.1.0"
Um eine Inventory-Definition für die Abfrage unseres Active Directory-Servers zu erstellen, muss unsere Inventory-Datei auf „microsoft.ad.ldap.yml“ oder „microsoft.ad.ldap.yaml“ enden. Nennen wir sie also einfach microsoft.ad.ldap.yml. Zum Testen verwende ich die folgende Konfiguration. Bevor Sie jetzt schreien – ich weiß, dass der Benutzername und das Passwort in Klartext vorliegen. Dieser Vorgang dient lediglich dazu, einige anfängliche Verbindungstests durchzuführen, damit wir einige der gewünschten Attribute ausprobieren können. Die Zugangsdaten werden später korrigiert.
plugin: microsoft.ad.ldap
server: ms-ad.demolab.local
username: svc-aap-ldap
password: Redhat123
tls_mode: ldaps
Jetzt können Sie das Plugin über die Befehlszeile mit dem Unterbefehl „inventory“ von Ansible Automation Platform Navigator testen. Da wir ldaps verwenden, ordnen wir den CA Trust Store von unserem RHEL-Host der Ausführungsumgebung unter Verwendung des Pfads /etc/pki/ca-trust zu.
Die Ausgabe zeigt, dass wir einen Host namens MS-AD ermittelt haben, bei dem es sich um unseren Domain Controller handelt.
$ ansible-navigator inventory -i microsoft.ad.ldap.yml --list -m stdout --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
{
"_meta": {
"hostvars": {
"MS-AD": {
"ansible_host": "ms-ad.demolab.local",
"microsoft_ad_distinguished_name": "CN=MS-AD,OU=Domain Controllers,DC=demolab,DC=local"
}
}
},
"all": {
"children": [
"ungrouped"
]
},
"ungrouped": {
"hosts": [
"MS-AD"
]
}
}
Die Konnektivität ist gut, aber die zurückgegebenen Informationen sind etwas spärlich. Außerdem konnten wir den Host keinen Gruppen hinzufügen. Es gibt zahlreiche dokumentierte Parameter, die wir für das Inventory-Plugin bereitstellen können, um es nach Bedarf anzupassen.
Tatsächlich können alle Computerattribute aus Active Directory zum Filtern, Festlegen von Variablen oder Gruppieren von Hosts verwendet werden. Um alle verfügbaren Attribute für unseren MS-AD -Host anzuzeigen, können wir den folgenden PowerShell-Befehl auf einem Windows-Host mit dem installierten Active Directory-PowerShell-Modul verwenden.
Get-ADComputer -Identity "MS-AD" -Properties *
Beziehen wir einige zusätzliche Parameter ein, und beginnen wir mit der Gruppierung von Hosts. Aktualisieren Sie die Inventory-Konfigurationsdatei microsoft.ad.ldap.yml, und schließen Sie zusätzliche Attribute ein, die aus Active Directory abgerufen werden. In unserem aktualisierten Beispiel erhalten wir Attribute für „OperatingSystem“ und „location“ sowie eine Liste aller Gruppen, in denen der Computer Mitglied ist. Machen Sie sich keine Sorgen über die Zeile „regex_search“ – ich habe sie aus der Dokumentation kopiert und eingefügt.
Im letzten Abschnitt der Konfiguration werden unsere Ansible Automation Platform-Gruppen definiert, damit wir Knoten klassifizieren können. Alle Rechner werden automatisch einer Gruppe namens „windows“ hinzugefügt. Außerdem fügen wir alle Hosts, die Mitglieder der Domain-Gruppe „Production“ sind, der entsprechenden Gruppe namens „production“ hinzu. Zum Schluss fügen wir Hosts basierend auf den Attributen „OperatingSystem“ und „location“ zu Gruppen hinzu. Hier ist die endgültige Konfigurationsdatei.
plugin: microsoft.ad.ldap
server: ms-ad.demolab.local
username: svc-aap-ldap
password: Redhat123
tls_mode: ldaps
attributes:
OperatingSystem:
operating_system:
location:
memberOf:
computer_membership: this | map("regex_search", '^CN=(?P<name>.+?)((?<!\\),)', '\g<name>') | flatten
groups:
windows: true
production: '"Production" in computer_membership'
keyed_groups:
- key: operating_system | lower
prefix: os
default_value: unknown
- key: location | lower
default_value: unknown
prefix: location
Ein letzter Test über die Befehlszeile. Sehen wir uns einmal die Attribute an, die von Active Directory zurückgegeben werden. Die Werte mit „__ansible_unsafe“ bedeuten einfach, dass sie für das jinja2-Templating blockiert sind.
$ ansible-navigator inventory -i microsoft.ad.ldap.yml -m stdout --host MS-AD --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
{
"ansible_host": "ms-ad.demolab.local",
"computer_membership": [
{
"__ansible_unsafe": "Production"
}
],
"location": {
"__ansible_unsafe": "london-dc1"
},
"microsoft_ad_distinguished_name": "CN=MS-AD,OU=Domain Controllers,DC=demolab,DC=local",
"operating_system": {
"__ansible_unsafe": "Windows Server 2019 Standard Evaluation"
}
}
Sehen wir uns als Nächstes die Gruppenmitgliedschaft an. Unser Server ist jetzt Mitglied von 4 Ansible Automation Platform-Gruppen, die wir nutzen können, um ihn nach Bedarf einzusetzen.
$ ansible-navigator inventory -i microsoft.ad.ldap.yml -m stdout --graph --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
@all:
|--@_london_dc1:
| |--MS-AD
|--@os_windows_server_2019_standard_evaluation:
| |--MS-AD
|--@production:
| |--MS-AD
|--@windows:
| |--MS-AD
Test abgeschlossen! Sehen wir uns an, wie wir dies in einer Unternehmensumgebung mit Automation Controller verwenden können.
Automation Controller konfigurieren
Automation Controller ermöglicht es Unternehmen zu standardisieren, wie Automatisierung eingesetzt, initiiert, delegiert und auditiert wird. Nun sollten wir unsere Klartext-Zugangsdaten korrigieren und unsere Inventory-Konfiguration kontrollieren.
Erstellen eines Zugangsdatentyps: Mit Automation Controller können wir benutzerdefinierte Zugangsdatentypen festlegen, sodass wir mit verschiedenen Systemen interagieren und gleichzeitig unsere Sicherheitslage beibehalten können. Dadurch können wir Umgebungsvariablen zur Laufzeit injizieren, anstatt sie im Klartext zu verwenden. Wenn Sie einen Blick in die Dokumentation für das Inventory-Plugin werfen, werden Sie feststellen, dass es verschiedene Umgebungsvariablen für die Authentifizierung akzeptiert. Wir verwenden diese Variablen mit Automation Controller.
Gehen Sie in der Automation Controller-Benutzeroberfläche zu „Credential Types“, und klicken Sie auf „Add“. Geben Sie dem Zugangsdatentyp einen Namen. Wir nennen ihn „Microsoft AD Inventory“. Für die „Input-Konfiguration“ können wir diese Felder verwenden, um die Felder zu definieren, die wir für unseren Benutzernamen, unser Passwort und unseren AD-Server erwarten.fields: - id: MICROSOFT_AD_LDAP_USERNAME type: string label: Username - id: MICROSOFT_AD_LDAP_PASSWORD type: string label: Password secret: true - id: MICROSOFT_AD_LDAP_SERVER type: string label: AD Server required: - MICROSOFT_AD_LDAP_USERNAME - MICROSOFT_AD_LDAP_PASSWORD - MICROSOFT_AD_LDAP_SERVER
Die „Injektor-Konfiguration“ definiert die Variablen, die wir in die Inventory-Synchronisierung injizieren. Verwenden Sie Folgendes:
env: MICROSOFT_AD_LDAP_SERVER: '{{ MICROSOFT_AD_LDAP_SERVER }}' MICROSOFT_AD_LDAP_PASSWORD: '{{ MICROSOFT_AD_LDAP_PASSWORD }}' MICROSOFT_AD_LDAP_USERNAME: '{{ MICROSOFT_AD_LDAP_USERNAME }}'
- Erstellen von Zugangsdaten : Da wir nun einen neuen Zugangsdatentyp haben, können wir entsprechende Zugangsdaten erstellen. Gehen Sie zu „Credentials“, und klicken Sie auf „Add“. Wählen Sie „Microsoft AD Inventory“ als neuen Zugangsdatentyp, und geben Sie wie in der Befehlszeile den Benutzernamen, das Passwort und den Active Directory-Server ein.
- Erstellen eines Projekts: Wir möchten die Konfiguration unseres Active Directory Inventorys in der Versionskontrolle verwalten, damit Änderungen die relevanten Peer-Reviews und Genehmigungen durchlaufen. Ein Projekt in Automation Controller ermöglicht die Zuordnung zu einem Repository für die Quellcodeverwaltung. Ich habe die Konfiguration, die wir für die Befehlszeile geschrieben haben, in ein GitHub Repository übertragen: https://github.com/phirriso/ansible_microsoft_ad_inventory.
WICHTIG: Wir haben Benutzernamen, Passwort oder Active Directory-Server nicht an die Versionskontrolle übergeben. Diese werden jetzt von unseren Zugangsdaten in Automation Controller verwaltet. Entfernen Sie die Parameter aus der Inventory-Konfiguration.
Navigieren Sie in der Automation Controller-Benutzeroberfläche zu „Projects“, und klicken Sie auf „Add“. Hier sehen Sie die Details zu unserem Projekt mit der entsprechenden URL für die Quellcodeverwaltung. Weitere Informationen zu den zusätzlichen Projektfeldern finden Sie in der Dokumentation.
Erstellen eines Inventorys : Wir können das Inventory jetzt erstellen. Navigieren Sie zu „Inventories“, und klicken Sie auf „Add“ und dann auf „Add Inventory“. Geben Sie dem Inventory einen geeigneten Namen.
Sobald Sie auf „Speichern“ geklickt haben, sind zusätzliche Optionen für das Inventory verfügbar. Wählen Sie „Sources“ aus, und klicken Sie auf „Add“. Hier stellen wir unsere Konfiguration zusammen, indem wir die Inventory-Konfigurationsdatei und die Zugangsdaten auswählen. Hier ist unsere vollständige Inventory-Quelle.HINWEIS: Das einzig mögliche Problem ist, dass Sie den Namen der Inventory-Datei manuell eingeben und die Eingabetaste drücken müssen, um dieses Feld auszufüllen.
Wenn Sie auf „Save“ klicken, wird am unteren Bildschirmrand die Schaltfläche „Sync“ angezeigt. Wenn Sie darauf klicken, wird unser Inventory-Plugin ausgeführt. Wir können den Fortschritt verfolgen, indem wir uns den „Last job status“ ansehen oder zum Menüeintrag „Jobs“ navigieren. Ich hoffe, dass die Meldung „Success“ angezeigt wird.
Wir können unsere Plugin-Konfiguration validieren, indem wir zu „Inventories“, „Demolab AD Inventory“ gehen und dann die Registerkarte „Hosts“ auswählen. Es sollte angezeigt werden, dass unsere Hosts importiert wurden:
Wenn wir auf den Host klicken, können wir auch die Variablen (Attribute) anzeigen, die wir in Active Directory erfasst haben. Und dann können wir auf die Registerkarte „Groups“ klicken, um zu überprüfen, ob wir den Host richtig gruppiert haben.
Nächste Schritte
Inventory-Management ist der Schlüssel zur Optimierung und Skalierung der Automatisierung mit Ansible Automation Platform. Das Microsoft AD Inventory-Plugin ist nur ein weiteres Beispiel dafür, wie Ansible Automation Platform das Leben von Nutzenden wie uns vereinfachen kann. Wenn Sie Active Directory als Source of Truth nutzen, können Sie Ihren Automatisierungsprozess mit Ansible Automation Platform for Windows beschleunigen.
- Ansible Automation Platform for Windows: Erfahren Sie, wie Ansible Automation Platform zur Verwaltung der Windows-Infrastruktur und für gängige Use Cases verwendet werden kann.
- Testsubskription: Sind Sie bereit für den Einstieg? Erhalten Sie Ihre eigene Testsubskription für unbegrenzten Zugriff auf alle Komponenten von Ansible Automation Platform.
- Verwalten Ihrer Windows-Umgebungen mit Kerberos
Über den Autor
Nach Thema durchsuchen
Automatisierung
Das Neueste zum Thema IT-Automatisierung für Technologien, Teams und Umgebungen
Künstliche Intelligenz
Erfahren Sie das Neueste von den Plattformen, die es Kunden ermöglichen, KI-Workloads beliebig auszuführen
Open Hybrid Cloud
Erfahren Sie, wie wir eine flexiblere Zukunft mit Hybrid Clouds schaffen.
Sicherheit
Erfahren Sie, wie wir Risiken in verschiedenen Umgebungen und Technologien reduzieren
Edge Computing
Erfahren Sie das Neueste von den Plattformen, die die Operations am Edge vereinfachen
Infrastruktur
Erfahren Sie das Neueste von der weltweit führenden Linux-Plattform für Unternehmen
Anwendungen
Entdecken Sie unsere Lösungen für komplexe Herausforderungen bei Anwendungen
Original Shows
Interessantes von den Experten, die die Technologien in Unternehmen mitgestalten
Produkte
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Cloud-Services
- Alle Produkte anzeigen
Tools
- Training & Zertifizierung
- Eigenes Konto
- Kundensupport
- Für Entwickler
- Partner finden
- Red Hat Ecosystem Catalog
- Mehrwert von Red Hat berechnen
- Dokumentation
Testen, kaufen und verkaufen
Kommunizieren
Über Red Hat
Als weltweit größter Anbieter von Open-Source-Software-Lösungen für Unternehmen stellen wir Linux-, Cloud-, Container- und Kubernetes-Technologien bereit. Wir bieten robuste Lösungen, die es Unternehmen erleichtern, plattform- und umgebungsübergreifend zu arbeiten – vom Rechenzentrum bis zum Netzwerkrand.
Wählen Sie eine Sprache
Red Hat legal and privacy links
- Über Red Hat
- Jobs bei Red Hat
- Veranstaltungen
- Standorte
- Red Hat kontaktieren
- Red Hat Blog
- Diversität, Gleichberechtigung und Inklusion
- Cool Stuff Store
- Red Hat Summit