Ansible-Playbooks mit Variablen strukturieren

Ansible kommt oft in sehr dynamischen Umgebungen zum Einsatz. Variablen können in dieser Situation helfen, die Konfigurations-Verwaltung besser zu strukturieren.

Ansible ist ein Tool zur IT-Automatisierung, das einige Komponenten mitbringt, mit denen sich der Zielzustand einer Infrastruktur definieren lässt. In dynamischen Umgebungen, etwa in Cloud-Umgebungen, geben Ansible-Variablen Administratoren sehr fein abgestimmte Kontrollmöglichkeiten über die Host-Konfiguration.

Die Struktur von Ansible, bestehend zum Beispiel aus Modulen, Playbooks oder auch Variablen, ist ein integraler Bestandteil davon, anvisierte Zielzustände einzuhalten und Infrastrukturen skalieren zu können. Bei der Konfigurationsverwaltung mit Ansible ist der Control Host die Management-Maschine, von der aus Aufgaben auf den verwalteten Hosts durchgeführt werden. Einzelne Instruktionen definieren als sogenannte Plays die abzuarbeitenden Aufgaben, die in den umfangreicheren Playbooks gesammelt werden. Ein Playbook gibt damit den gesamten Befehlssatz für die Host-Automatisierung an.

Module wiederum ermöglichen das Scheduling von Aufgaben auf den verwalteten Hosts, ohne dass hierfür ein Administrator jeden einzelnen Schritt zur Abarbeitung der Aufgabe vorgeben muss. Von Ansible verwaltete Hosts werden im Host Inventory aufgelistet, und immer wenn ein Playbook angewendet wird, funktioniert es auf Hosts innerhalb des Inventars.

Wird das Inventar sinnvoll geordnet, dann können Administratoren sehr einfach entscheiden, auf welchen Hosts bestimmte Aktionen durchgeführt werden sollen. Dabei ist es üblich, Sektionen zu definieren, so dass sich schnell alle Hosts identifizieren lassen und bestimmte, etwa Web- oder Datenbankserver, herausfiltern lassen.

Das Host-Inventar kann statisch bereitgestellt oder dynamisch generiert werden, etwa durch LDAP (Lightweight Directory Access Protocol). Die dynamische Generierung ist vor allem dann sinnvoll, wenn Workloads auf IaaS-Ressourcen bereitgestellt werden oder es aus anderen Gründen häufige Änderungen gibt.

Mehr Struktur mit Ansible-Variablen

Ansible-Playbooks verwalten sich häufig verändernde Infrastrukturen, wodurch Variablen an Bedeutung gewinnen. Ansible-Variablen ermöglichen Playbooks die Verwendung statischen Codes, der dynamisch an spezifische Umgebungen angepasst wird. Anstatt in Playbooks sich häufig verändernde Werte zu verwenden, etwa Nutzernamen oder IP-Adressen, können Anwender externe Variablen referenzieren.

Ansible-Variablen haben eine unterschiedliche Reichweite. Eine globale Variable gilt für alle verwalteten Hosts. Variablen können aber auch nur für Plays und die unmittelbar damit zusammenhängenden Strukturen gelten. Genauso können Ansible-Admins Variablen aber auch nur auf ganz spezifische Hosts anwenden.

Rangordnung für Ansible-Variablen

Aufgrund dieser unterschiedlichen Reichweite von Ansible-Variablen sollten Administratoren eine Rangfolge aufsetzen. Die Reihenfolge folgt dabei der eben erwähnten Struktur. Wenn eine globale Variable auf der Kommandozeile spezifiziert wird, während ein Playbook abläuft, wird diese immer Vorrang vor der Playbook-spezifischen Variable haben. Diese Art der Priorisierung mag viele Administratoren auf den ersten Blick ein wenig verwirren, und damit hört es noch lange nicht auf.

Es gibt nämlich eine Ausnahme bei der Rangfolge von Ansible-Variablen: Variablen die mit dem Befehl include_vars eingebunden werden, genießen Vorrang vor allen anderen Variablen. Viele Administratoren würden erwarten, dass über die Kommandozeile spezifizierte Variablen Vorrang genießen, und gerade include_vars kann einige Verwirrung stiften, wenn eine Ansible-Konfiguration strukturiert wird.

fact – die spezielle Ansible-Variable

fact schließlich beschreibt eine spezielle Variable, die gesammelte Werte über einen spezifischen Host enthält. Gesammelt werden diese Werte vom Ansible Setup-Modul. Mit der fact-Variable können Administratoren Plays nur auf ganz bestimmte Hosts anwenden, die spezifischen Werten entsprechen. Einen Überblick über alle Host-facts erhält man über den Befehl ansible some.host.com -m setup, wobei some.host.com natürlich durch einen verwalteten Host ersetzt werden muss.

Ansible verwendet Jinja2, eine Template-Sprache für Python, um Code auf bestimmte Hosts anzuwenden. Jinja2-Tempates modifizieren Dateien, bevor sie an Hosts verteilt werden. Dies macht spezielle Kontrollstrukturen möglich, die Code auf Hosts anwenden, nachdem dieser Code modifiziert wurde.

Gerade Einsteiger haben oft Probleme damit, zu verstehen, wie Ansible funktioniert, da es so viele unterschiedliche Komponenten gibt, die miteinander interagieren. Dieses enge Netz an Beziehungen zwischen den Komponenten ist es aber gerade, was Ansible zu so einem skalierbaren und mächtigen Tool zur Konfigurationsverwaltung macht. Wer neu im Umgang mit Ansible ist, der sollte einfach anfangen, Playbooks auf Hosts anzuwenden. Wenn man dann verstanden hat, wie dies funktioniert, dann kann man auch tiefer in die Materie einsteigen.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Die grundlegenden Komponenten von Ansible

Überblick über die YAML-Syntax von Ansible-Playbooks

Netzwerk-Orchestrierung mit Ansible

Artikel wurde zuletzt im Oktober 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Data-Center-Systems-Management

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close