Ansible Verwendungsszenarien

In diesem Blog-Beitrag versuche ich eine kurze Antwort auf die Frage „Was ist Ansible“ zu geben. Ansible ist ein leistungsstarkes Open-Source Automatisierungs-Werkzeug unter Linux, welches den Administratoren von Linux und auch Windows Systemen helfen kann, Softwareverteilung, Konfigurationsmanagement, manuelle Schritte und routinierte bzw. sich wiederholende Aufgaben zu beschleunigen und zu automatisieren.

Hier sind die typischen Einsatzbereiche:

  • automatische Anwendungsbereitstellung
  • automatische Konfiguration
  • Orchestrierung
  • Sicherheit and Compliance
  • Bereitstellung in der Cloud

Wie wir alle wissen, könnte man bei einer manuellen Konfiguration von mehreren Systemen nie sicher sein, dass diese wirklich gleich konfiguriert sind. Ansible garantiert ein identisches Setup auf jedem Zielsystem.

Ansible wurde 2012 als Projekt ins Leben gerufen im Jahr 2015 von RedHat übernommen, es ist jedoch auf allen Linux Distributionen lauffähig und wird weiterhin als Open Source Projekt weiterentwickelt.

Ansible Architektur

Im Gegensatz zu den meisten Konkurrenten ist Ansible agentenlos. Auf den Linux-Ziel-Systemen werden keinerlei Konfigurationsschritte benötigt, auf den Windows-Ziel-VMs hingegen muss WinRM mit dem folgenden PowerShell-Skript aktiviert und konfiguriert werden: ConfigureRemotingForAnsible.ps1

 

Ansible Architecture Diagram

Im Groben besteht Ansible aus folgenden Komponen:

  • Control node / Controller
  • Inventorys
  • Modules
  • Roles
  • Playbooks
  • API
  • Managed nodes / Hosts / Clients

Je nach Betriebssystem findet die Kommunikation zwischen dem Controller und den Hosts entweder per SSL (Linux und Unix) oder WinRM (Windows) statt. Ansible selbst wurde in Python geschrieben. 

Control node / Controller

Ein Controller ist eine zentrale Verwaltungseinheit, welche alle notwendigen Komponenten beinhaltet.  Ansible initiiert die Verbindungen zu den Hosts und sendet an diese die sogenannte "Ansible-Module". Die Module werden auf dem Zielsystem ausgeführt und anschließend gelöscht.

Ansible lässt sich auf fast allen Linux Distributionen installieren. Die einzige Software-Voraussetzung ist eine Python-Installation (Python 2, ab Version 2.6 oder Python 3, ab Version 3.5.

Die Hardware-Vorrausetzungen sind von der Installation der zusätzlichen Komponenten, wie z.B. Ansible Tower, sowie der Intensivität der Nutzung abhängig.

Managed nodes / Hosts

Wie der Name auch sagt, sind Managed Nodes die von Ansible zu verwaltenden Einheiten. Ansible ist in der Lage die unterschiedlichen Server / Client (Windows/Linux/Unix) und Netzwerkkomponenten zu verwalten.

Inventory

Inventory ist eine .ini- oder YAML-Format erstellte Datei, die eine Liste von gemanagten Endsystemen (Hosts) beinhaltet. Die wichtigste Information dabei sind die IP-Adressen und die Hostnamen. Für eine bessere Verwaltbarkeit werden die Hosts in Gruppen zusammengefasst.

Beispiel einer Inventory-Datei im ini-Format

[delivery-controller]
  10.10.11.1
  10.10.11.2
[storefront-server]
  10.10.11.11
  10.10.11.12

In der offiziellen Dokumentation finden Sie eine ausführliche Beschreibung der Inventory-Dateien

Roles

Die Rollen sind oft fertige, herunterladbare Komponenten, die zur Erledigung der unterschiedlichen Orchestrierung- bwz. Automatisierung-Aufgaben vorgesehen sind. Auf Ansible Galaxy finden Sie mit hoher Wahrscheinlichkeit eine bereits existirende Rolle, die Sie direkt einsetzen können oder als eine Inspiration für eine eigene Konfiguration nutzen.

Mehrere einzelne Tasks können zu einzelnen wiederverwendbaren Rollen zusammengefasst werden, um diese in verschiedenen Szenarien zu verwenden.

Module

Die Module sind dafür da, um die einzelne spezifische, meistens wiederkehrende Aufgabe zu erledigen (z.B. Erstellen oder Kopieren von Files, Installieren, Starten von bestimmten Diensten).  Die Modele sind eine Art Bausteine, die miteinander kombiniert werden. Die Module werden in einem Playbook oder in einer Rolle ausgeführt. 

Module Index — Ansible Dokumentation

Playbooks

Playbooks ist eine Sammlung von einzelnen Modulen/Tasks/Rollen, die in einer bestimmten Reihenfolge zusammengefasst werden. Die Playbooks beinhalten die unterschiedlichen Tasks, die eine gewünschte Konfiguration beschreiben. Die Playbooks werden sowohl für die Konfiguration als auch für die Überprüfung der Konfiguration genutzt. Wenn man beispielsweise einen Ansible-Task zum Starten eines Webservers definiert, wird der Webserver bei der ersten Ausführung gestartet und bei der zweiten wird es nur überprüft, ob der Webserver tatsächlich läuft.

Die Playbooks werden in der Sprache YAML erstellt und lassen sich beliebig komplex zusammenstellen.

Ansible Tower / AWX

Ansible Tower / Ansible AWX sind Apache-basierende Webseiten, die eine GUI Oberfläche für Ansible bietet und dadurch einen schnelleren Einstieg ermöglichten, da die Arbeit mit der Command Line nicht mehr benötigt wird. Ansible Tower ist kostenpflichtig und beinhaltet einen RedHat Support. AWX ist eine von Open-Source-basierende Alternative. 

 

Ansible für Citrix

Wie Sie leicht erkennen können, ist meine Seite sehr Citrix-lastig.  Im Bereich Citrix kann Ansible einen sichtbaren Mehrwert bieten. Besonders attraktiv ist die Verwendung von Ansible bei der Automatisierung und Verwaltung der Citrix NetScaler-Infrastriktur (unabhängig von dem Formfaktor).

Ansible für Citrix kann eine Reihe von Aufgaben übernehmen, wie z.B: virtuelle Server erstellen und verwalten, GSLB / Content Switching / Session Persistence konfigurieren und verwalten. Die Integration von Ansible erfolgt über die REST-API (NITRO).

In diesem Dokument finden Sie eine detaillierte Lösungsbeschreibung, sowie einige Konfigurationsbeispiele: White Paper | Automate NetScaler with Ansible

Auch eine vollständige Liste der Module finden Sie unter diesem Link: https://netscaler-ansible.readthedocs

Links:

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.