Alles, was Sie wissen müssen

Einführung in Ansible und Ansible Galaxy

Ansible präsentiert sich als ein weit verbreitetes Open-Source-Tool für die Konfigurationsverwaltung. Parallel dazu fungiert Ansible Galaxy als ein Verzeichnis, das speziell Ansible-Rollen beherbergt.

Als Systemadministrator-Einsteiger verfügen Sie vielleicht anfänglich nur über eine begrenzte Anzahl von Playbooks. Mit zunehmender Erfahrung und Vertrautheit mit Ansible werden Sie jedoch die Bedeutung bewährter Praktiken erkennen. Im Zuge der Erweiterung Ihrer Playbooks wird Ihnen auch die entscheidende Rolle von Ansible Galaxy bewusst werden.

Was ist Ansible Galaxy?

Ansible Galaxy ist eine webbasierte, offene Plattform, die als Online-Repository für Ansible-Inhalte (hauptsächlich Rollen und Kollektionen) dient. Stellen Sie es sich wie ein Ort vor, an dem man neu entwickelte Inhalte teilen kann.

Wenn Sie auf Schwierigkeiten bei der Ansible-Automatisierung stoßen oder vorgefertigte Lösungen suchen, um Ihre Automatisierungsprojekte zu beschleunigen, kann Ansible Galaxy eine wertvolle Hilfe sein. Hier finden Sie Rollen, Sammlungen, Module oder Plugins. Zahlreiche Community-Mitglieder haben bereits ihre Ansible-Sammlungen und -Rollen hochgeladen und zur Verfügung gestellt.

Zur Ausführung von Aufgaben wie der Installation von Rollen aus Galaxy oder einem Git-SCM, der Erstellung oder Entfernung von Rollen oder der Durchführung bestimmter Aktionen auf der Galaxy-Site können Sie den Befehl „ansible-galaxy“ verwenden. Dieser Befehl ist standardmäßig in Ansible enthalten und steht nach der Installation direkt zur Verfügung.

Das Galaxy-Projekt ist ein Open-Source-Projekt, das die Möglichkeit bietet, unsere eigenen internen Galaxy-Server zu betreiben. Um den internen Galaxy-Server zu nutzen, muss die Standardkonfiguration in der Datei Ansible.cfg mit der Adresse des internen Servers aktualisiert werden, da standardmäßig die Adresse galaxy.ansible.com verwendet wird.

Ansible im Überblick

Ansible kann als Multiplikator betrachtet werden, der die Automatisierung und Skalierung von Infrastrukturen jeder Größe ermöglicht. Es kann zur Verwaltung von Konfigurationen, zur Orchestrierung von Bereitstellungen und für viele weitere Funktionen eingesetzt werden. Ansible zeichnet sich durch seine einfache Einrichtung aus und ist auch für weniger erfahrene Systemadministratoren geeignet, um die Infrastruktur innerhalb weniger Stunden zu automatisieren.

Ansible verwendet das SSH-Protokoll für die Automatisierung. Die Kontrollinstanz kommuniziert über SSH-Verbindungen mit den Zielhosts, in der Regel Linux-Hosts. Windows-Systemadministratoren können Ansible jedoch ebenfalls nutzen, um ihre Windows-Umgebungen mithilfe von WinRM anstelle von SSH zu automatisieren. Die Kontrollinstanz muss dabei weiterhin auf Linux basieren.

Ansible ist in der Lage, gängige Systemadministratoraufgaben wie Patchen, Aktualisieren, Benutzer- und Gruppenverwaltung, Bereitstellung und andere Verwaltungsaufgaben zu erledigen.

Ansible ist heutzutage das meistgenutzte Tool für Konfigurationsmanagement, Orchestrierung und Bereitstellung. Seine Stärke liegt in seiner Einfachheit. Es ist benutzerfreundlich, leistungsstark und arbeitet ohne Agenten. Dies ermöglicht es auch unerfahrenen Systemadministratoren, die Infrastruktur in kurzer Zeit zu automatisieren. Ansible fördert schnelle Skalierbarkeit, Effizienz und Funktionalität über verschiedene Bereiche hinweg.

Arbeiten mit Ansible Galaxy

Im Folgenden werden wir das Terminal öffnen und einige Befehle mit Ansible Galaxy ausführen. Zuvor sollten Sie sicherstellen, dass die neueste Ansible-Version auf Ihrem System installiert ist.

Wenn Ansible bereits installiert ist, geben Sie einfach „ansible-galaxy“ im Terminal ein, um alle verfügbaren Optionen anzuzeigen.

[email protected]:~$ ansible-galaxy

Als ersten Schritt können Sie mit dem Befehl „init“ eine neue Rolle erstellen. In diesem Beispiel wird eine Rolle namens „testing“ erstellt. Sie können den Befehl „ls“ verwenden, um zu überprüfen, ob die Rolle erfolgreich erstellt wurde. Der Befehl „init“ erstellt automatisch die notwendigen Dateien im Verzeichnis der Testrolle.

[email protected]:~$ ansible-galaxy init testing

Ansible Galaxy ist eine umfangreiche und aktive Community, in der bereits zahlreiche Rollen entwickelt wurden, die direkt eingesetzt werden können.

Die folgende Abbildung zeigt die Startseite von „galaxy.ansible.com“. Sie können eine beliebige Kategorie auf der Startseite auswählen oder die Suchfunktion nutzen, um eine detailliertere Suche durchzuführen.

Wenn Sie beispielsweise eine MySQL-Serverrolle suchen, geben Sie dies in die Suchleiste ein und verwenden Sie den Filter. Sie werden feststellen, dass geerlingguy die meisten Downloads hat. Sie können diese Rolle installieren, indem Sie auf „geerlingguy.mysql“ klicken.

Anschließend wird Ihnen der Installationsbefehl angezeigt, den Sie mit ansible-galaxy ausführen können.

Führen Sie den im Screenshot angegebenen Befehl aus, um die MySQL-Serverrolle herunterzuladen und auf Ihrem Computer zu installieren.

[email protected]:~$ ansible-galaxy install geerlingguy.mysql

Wenn Sie nach einer Rolle von einem bestimmten Autor suchen, können Sie den Suchbefehl wie folgt verwenden:

[email protected]:~$ ansible-galaxy search elasticsearch --author geerlingguy

Häufige Ansible Galaxy-Befehle

Der Befehl „ansible-galaxy“ dient der Verwaltung von Rollen und Sammlungen aus galaxy.ansible.com. Hier sind einige nützliche Ansible Galaxy-Befehle, die Systemadministratoren regelmäßig verwenden:

  • ansible-galaxy list: Zeigt eine Liste aller installierten Rollen mit ihren Versionsnummern an.
  • ansible-galaxy remove: Entfernt eine installierte Rolle vom System.
  • ansible-galaxy info: Liefert detaillierte Informationen zu Ansible Galaxy.
  • ansible-galaxy init: Erstellt eine Rollenvorlage, die für die Veröffentlichung in Ansible Galaxy geeignet ist.
  • ansible-galaxy import: Erfordert eine Anmeldung, um eine Rolle von der offiziellen Galaxy-Website zu importieren.

Die oben genannten Befehle (init, import, install, remove) können auch mit dem Befehl ansible-galaxy collection verwendet werden, um Sammlungen mit Ansible Galaxy zu verwalten.

Betrachten wir nun die Rollen und Sammlungen in Ansible Galaxy.

Rollen mit Ansible Galaxy erstellen

Ansible Galaxy ist im Wesentlichen ein umfangreiches, öffentliches Verzeichnis für Ansible-Rollen. Rollen enthalten README-Dateien, die die Nutzung und die Variablen erklären. Galaxy bietet eine Vielzahl von Rollen, die kontinuierlich weiterentwickelt werden.

Galaxy kann Rollenquellen wie GitHub über Git einbinden. Ansible Galaxy ermöglicht die Erstellung von Ansible-Rollen mit dem Befehl ansible-galaxy. ansible-galaxy init kann verwendet werden, um eine neue Galaxy-Rolle zu initialisieren, oder ansible-galaxy install <Rollenname>, um eine Rolle zu installieren.

Vor der Nutzung in Playbooks muss die Rolle heruntergeladen werden. Sobald sie im Standardverzeichnis /etc/ansible/roles gespeichert ist, stehen Rollenbeispiele zur Verfügung.

Ansible Rollenstruktur und ihre Bedeutung

Die folgenden Dateien und Verzeichnisse werden bei der Installation einer Rolle erstellt:

  • README.md: Die Readme-Datei, die die Rolle beschreibt. Sie enthält Details zu den Eingabeparametern und Beispiele für YAML-Dateien.
  • tasks: Hier werden alle Aufgaben der Rolle aufgeführt. Der Einstiegspunkt für die Rolle ist main.yml. Diese Datei kann weitere Dateien einbinden.
  • handlers: Hier befinden sich Handler, die in dieser oder anderen Rollen verwendet werden können.
  • defaults: Die Standardvariablen für die Rolle.
  • vars: Variablen, die Vorrang vor den Standardwerten für eine Rolle haben.
  • files: Dateien, die mit der Rolle bereitgestellt werden können.
  • templates: Vorlagen, die über die Rolle genutzt werden können.
  • meta: Metadaten zur Definition der Rolle. Diese Datei sollte auch alle Rollenabhängigkeiten enthalten.
  • tests: CI-Tests, die ausgeführt werden sollen.
  • library: Module oder Plugins, die in Rollen eingebettet sind. Wird nicht durch den Befehl init erstellt. Hier können Sie auch eigene Module in Python erstellen und in Ihren Aufgaben verwenden.

Sammlungen mit Ansible Galaxy erstellen

Ansible Galaxy ist seit Jahren das bevorzugte Werkzeug zur Verwaltung von Rollen. Mit Ansible Version 2.2.8 wurde die Funktion der Sammlungen eingeführt.

Ansible-Inhalte können mit Sammlungen verteilt werden. Sie dienen dem Verpacken und Verteilen von Playbooks und Rollen, Modulen und Plugins.

Die folgende Struktur dient als Basis für Sammlungen:

collection/
├── docs/
├── galaxy.yml
├── plugins/
│ ├──
modules/
│ │ └── module1.py
│ ├──
inventory/
│ └── .../
├── README.md
├── roles/
│ ├──
role1/
│ ├──
role2/
│ └── .../
├── playbooks/
│ ├──
files/
│ ├──
vars/
│ ├──
templates/
│ └── tasks/
└── tests/

Erstellen eines Sammlungsskeletts

Um eine Sammlung auf Ihrem Computer zu installieren, verwenden Sie den Befehl ansible-galaxy collection install.

Es gibt auch einige Unterbefehle, die mit Ansible Galaxy genutzt werden können:

  • init: Erstellt eine grundlegende Sammlungsstruktur basierend auf der Standardvorlage von Ansible oder einer benutzerdefinierten Vorlage.
  • build: Erstellt ein Sammlungsartefakt, das auf Galaxy oder in ein eigenes Repository hochgeladen werden kann.
  • publish: Veröffentlicht ein integriertes Sammlungsartefakt auf Galaxy.
  • install: Installiert eine oder mehrere Sammlungen.

Fazit

Ansible Galaxy bietet eine hervorragende Möglichkeit, Ihre stetig wachsenden Rollenbücher zu organisieren und zu verwalten. Ansible Galaxy hat etwa 39.000 Community-Autoren, 30.000 Rollen und 1656 Sammlungen, die Ihnen helfen können, Ihr Automatisierungsprojekt zügig zu starten. Die Entwickler- und Mitwirkungsleitfäden erläutern, wie Sie zum bestehenden Ansible Galaxy-Code, einem Open-Source-Projekt, beitragen können.

Sie könnten auch an Systemadministratoraufgaben interessiert sein, die Sie mit Ansible automatisieren können.