Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

IT-Umgebungen werden immer komplexer. Unter diesen Bedingungen ist es für das IT-Automatisierungssystem von entscheidender Bedeutung, über aktuelle Informationen über die Knoten zu verfügen, die im Netzwerk vorhanden sind und der Verarbeitung unterliegen. In der Red Hat Ansible Automation Platform wird dieses Problem durch die sogenannte Inventarisierung (Inventar) – Listen der verwalteten Knoten.

Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

In seiner einfachsten Form ist das Inventar eine statische Datei. Dies ist ideal, wenn Sie anfangen, mit Ansible zu arbeiten, aber mit zunehmender Automatisierung wird es nicht mehr ausreichend.

Und hier ist warum:

  1. Wie aktualisieren und pflegen Sie eine vollständige Liste der überwachten Knoten, wenn sich die Dinge ständig ändern, wenn Arbeitslasten – und damit auch die Knoten, auf denen sie ausgeführt werden – kommen und gehen?
  2. Wie lassen sich die Komponenten der IT-Infrastruktur klassifizieren, um gezielt Knoten für die Anwendung einer bestimmten Automatisierung auszuwählen?

Dynamisches Inventar liefert Antworten auf diese beiden Fragen (dynamisches Inventar) – ein Skript oder Plugin, das nach zu automatisierenden Knoten sucht und dabei auf die Quelle der Wahrheit verweist. Darüber hinaus klassifiziert die dynamische Bestandsaufnahme Knoten automatisch in Gruppen, sodass Sie Zielsysteme für die Durchführung spezifischer Ansible-Automatisierungen genauer auswählen können.

Inventar-Plugins Geben Sie dem Ansible-Benutzer die Möglichkeit, auf externe Plattformen zuzugreifen, um dynamisch nach Zielknoten zu suchen und diese Plattformen als Quelle der Wahrheit bei der Erstellung eines Inventars zu verwenden. Die Standardliste der Quellen in Ansible umfasst die Cloud-Plattformen AWS EC2, Google GCP und Microsoft Azure, außerdem gibt es viele weitere Inventar-Plugins für Ansible.

Ansible Tower wird mit einer Reihe von geliefert Inventar-Plugins, die sofort einsatzbereit sind und zusätzlich zu den oben aufgeführten Cloud-Plattformen eine Integration mit VMware vCenter, Red Hat OpenStack Platform und Red Hat Satellite ermöglichen. Für diese Plugins müssen Sie lediglich Anmeldeinformationen angeben, um eine Verbindung zur Zielplattform herzustellen. Anschließend können sie als Quelle für Inventardaten in Ansible Tower verwendet werden.

Zusätzlich zu den in Ansible Tower enthaltenen Standard-Plugins gibt es weitere Inventar-Plugins, die von der Ansible-Community unterstützt werden. Mit dem Übergang zu Red Hat Ansible-Inhaltssammlungen Diese Plugins wurden in die entsprechenden Sammlungen aufgenommen.

In diesem Beitrag nehmen wir ein Beispiel für die Arbeit mit dem Inventar-Plugin für ServiceNow, einer beliebten IT-Service-Management-Plattform, bei der Kunden häufig Informationen über alle ihre Geräte in der CMDB speichern. Darüber hinaus kann die CMDB Kontext enthalten, der für die Automatisierung nützlich ist, z. B. Informationen zu Serverbesitzern, Servicelevels (Produktion/Nichtproduktion), installierten Updates und Wartungsfenstern. Das Ansible-Inventar-Plugin kann mit ServiceNow CMDB arbeiten und ist Teil der Sammlung Service jetzt auf dem Portal galaxy.ansible.com.

Git-Repository

Um ein Inventar-Plugin aus einer Sammlung in Ansible Tower zu verwenden, muss es als Projektquelle festgelegt werden. In Ansible Tower ist ein Projekt eine Integration mit einer Art Versionskontrollsystem, wie einem Git-Repository, das nicht nur zur Synchronisierung von Automatisierungs-Playbooks, sondern auch von Variablen und Inventarlisten verwendet werden kann.

Unser Repository ist eigentlich ganz einfach:

├── collections
│   └── requirements.yml
└── servicenow.yml

Die Datei servicenow.yml enthält Details zum Plugin-Bestand. In unserem Fall geben wir einfach die Tabelle in der ServiceNow CMDB an, die wir verwenden möchten. Wir legen außerdem die Felder fest, die als Knotenvariablen hinzugefügt werden, sowie bestimmte Informationen zu den Gruppen, die wir erstellen möchten.

$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
  - key: sn_sys_class_name | lower
	prefix: ''
	separator: ''
  - key: sn_os | lower
	prefix: ''
	separator: ''

Bitte beachten Sie, dass dies weder die ServiceNow-Instanz angibt, mit der wir uns in irgendeiner Weise verbinden, noch Anmeldeinformationen für die Verbindung angibt. All dies werden wir später in Ansible Tower konfigurieren.

Dateicollections/requirements.yml Wird benötigt, damit Ansible Tower die erforderliche Sammlung herunterladen und dadurch das erforderliche Inventar-Plugin erhalten kann. Andernfalls müssten wir diese Sammlung manuell auf allen unseren Ansible Tower-Knoten installieren und warten.

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

Sobald wir diese Konfiguration in die Versionskontrolle übernommen haben, können wir in Ansible Tower ein Projekt erstellen, das auf das entsprechende Repository verweist. Das folgende Beispiel verknüpft Ansible Tower mit unserem Github-Repository. Achten Sie auf die SCM-URL: Sie ermöglicht Ihnen die Registrierung eines Kontos für die Verbindung mit einem privaten Repository sowie die Angabe eines bestimmten Zweigs, Tags oder Commits zum Auschecken.

Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

Anmeldeinformationen für ServiceNow erstellen

Wie bereits erwähnt, enthält die Konfiguration in unserem Repository keine Anmeldeinformationen für die Verbindung zu ServiceNow und gibt nicht die ServiceNow-Instanz an, mit der wir kommunizieren werden. Um diese Daten festzulegen, erstellen wir daher Anmeldeinformationen in Ansible Tower. Entsprechend Dokumentation zum ServiceNow-Inventar-Plugin, es gibt eine Reihe von Umgebungsvariablen, mit denen wir die Verbindungsparameter festlegen, beispielsweise wie folgt:

= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

Wenn in diesem Fall die Umgebungsvariable SN_USERNAME festgelegt ist, verwendet das Inventar-Plugin sie als Konto für die Verbindung mit ServiceNow.

Wir müssen auch die Variablen SN_INSTANCE und SN_PASSWORD festlegen.

Allerdings gibt es in Ansible Tower keine Anmeldeinformationen dieser Art, bei denen Sie diese Daten für ServiceNow angeben könnten. Aber Ansible Tower ermöglicht es uns, zu definieren benutzerdefinierte Anmeldeinformationstypen, mehr dazu können Sie im Artikel lesen „Ansible Tower Feature Spotlight: Benutzerdefinierte Anmeldeinformationen“.

In unserem Fall sieht die Eingabekonfiguration für benutzerdefinierte Anmeldeinformationen für ServiceNow so aus:

fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Diese Anmeldeinformationen werden als Umgebungsvariablen mit demselben Namen angezeigt. Dies wird in der Injektorkonfiguration beschrieben:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

Wir haben also den Anmeldeinformationstyp definiert, den wir benötigen. Jetzt können wir ein ServiceNow-Konto hinzufügen und die Instanz, den Benutzernamen und das Passwort wie folgt festlegen:

Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

Wir erstellen Inventar

Jetzt sind wir alle bereit, ein Inventar im Ansible Tower zu erstellen. Nennen wir es ServiceNow:

Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

Nachdem wir das Inventar erstellt haben, können wir ihm eine Datenquelle hinzufügen. Hier geben wir das zuvor erstellte Projekt an und geben den Pfad zu unserer YAML-Inventardatei im Quellcodeverwaltungs-Repository ein, in unserem Fall ist es servicenow.yml im Projektstammverzeichnis. Darüber hinaus müssen Sie Ihr ServiceNow-Konto verknüpfen.

Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

Um zu überprüfen, wie alles funktioniert, versuchen wir, eine Synchronisierung mit der Datenquelle durchzuführen, indem wir auf die Schaltfläche „Alle synchronisieren“ klicken. Wenn alles richtig konfiguriert ist, sollten die Knoten in unser Inventar importiert werden:

Verwendung von Inventar-Plugins aus Ansible Content Collections in Ansible Tower

Bitte beachten Sie, dass die von uns benötigten Gruppen ebenfalls erstellt wurden.

Abschluss

In diesem Beitrag haben wir uns am Beispiel des ServiceNow-Plugins mit der Verwendung von Inventar-Plugins aus Sammlungen in Ansible Tower befasst. Wir haben auch Anmeldeinformationen sicher registriert, um eine Verbindung zu unserer ServiceNow-Instanz herzustellen. Das Verknüpfen eines Inventar-Plugins aus einem Projekt funktioniert nicht nur mit Plugins von Drittanbietern oder benutzerdefinierten Plugins, sondern kann auch zum Ändern der Funktionsweise einiger Standardinventare verwendet werden. Dadurch lässt sich die Ansible Automation Platform einfach und nahtlos in bestehende Tools integrieren, um immer komplexere IT-Umgebungen zu automatisieren.

Weitere Informationen zu den in diesem Beitrag behandelten Themen sowie zu anderen Aspekten der Verwendung von Ansible finden Sie hier:

*Red Hat übernimmt keine Garantie dafür, dass der hierin enthaltene Code korrekt ist. Sofern nicht ausdrücklich anders angegeben, werden alle Materialien ohne Empfehlung bereitgestellt.

Source: habr.com

Kommentar hinzufügen