Ansible Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 1: Zeile 1:
 
 
=Grundsätzliches=
 
=Grundsätzliches=
 
*Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern.
 
*Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern.
Zeile 8: Zeile 7:
  
 
=Geschichte=
 
=Geschichte=
*Ansible startete im Februar 2012 und die Plattform wurde von Michael DeHaan erstellt
+
*Ansible startete im Februar 2012 und die Plattform wurde von Michael DeHaan erstellt.
 
*Anwender von Ansible sind beispielsweise das Fedora Projekt, Hewlett-Packard Deutschland, Hetzner und die Universität Thessaloniki.
 
*Anwender von Ansible sind beispielsweise das Fedora Projekt, Hewlett-Packard Deutschland, Hetzner und die Universität Thessaloniki.
 
*Ansible ist enthalten in der Fedora-Linux-Distribution des Unternehmens Red Hat Inc.
 
*Ansible ist enthalten in der Fedora-Linux-Distribution des Unternehmens Red Hat Inc.
Zeile 14: Zeile 13:
 
*Ab Version 1.7 unterstützen diverse Module auch Windows über Powershell-3.0-Befehle.
 
*Ab Version 1.7 unterstützen diverse Module auch Windows über Powershell-3.0-Befehle.
 
*Im Januar 2016 wurde die Version 2.0 veröffentlicht.[5]
 
*Im Januar 2016 wurde die Version 2.0 veröffentlicht.[5]
 +
*Seit Version 2.10 (2020) ist Ansible in zwei Teile gesplittet: '''ansible-core''' (die Engine) und das Paket '''ansible''' (Engine + kuratierte Collections).
 +
*Inhalte werden seither überwiegend als '''Ansible Content Collections''' über Ansible Galaxy vertrieben statt fest im Kernpaket enthalten zu sein.
 +
 
=AnsibleWorks=
 
=AnsibleWorks=
 
Am 4. März 2013 wurde die Firma AnsibleWorks gegründet.
 
Am 4. März 2013 wurde die Firma AnsibleWorks gegründet.
*Sie ist maßgeblich an der Entwicklung von Ansible beteiligt
+
*Sie ist maßgeblich an der Entwicklung von Ansible beteiligt.
 
*Sie bietet verschiedene Produkte rund um Ansible an, darunter Support und eine Browser-basierte Benutzerschnittstelle.
 
*Sie bietet verschiedene Produkte rund um Ansible an, darunter Support und eine Browser-basierte Benutzerschnittstelle.
*Am 16. Oktober 2015 wurde bekanntgegeben, dass Ansible Inc.durch Red Hat Inc. übernommen und in das eigene Portfolio integriert wird.
+
*Am 16. Oktober 2015 wurde bekanntgegeben, dass Ansible Inc. durch Red Hat Inc. übernommen und in das eigene Portfolio integriert wird.
 +
 
 
=Architektur=
 
=Architektur=
*Wie die meisten anderen Konfigurationsmanagement-Systeme unterscheidet Ansible zwischen Konfigurationsüberwachung und Knoten
+
*Wie die meisten anderen Konfigurationsmanagement-Systeme unterscheidet Ansible zwischen Konfigurationsüberwachung und Knoten.
 
*Auf den Knoten wird die Konfigurationsänderung durchgeführt.
 
*Auf den Knoten wird die Konfigurationsänderung durchgeführt.
*Diese Knoten werden von Ansible via SSH verwaltet,
+
*Diese Knoten werden von Ansible via SSH verwaltet.
*Wobei die Lage der Knoten im Inventar der Konfigurationsüberwachung verwaltet wird.
+
*Die Lage der Knoten im Inventar wird von der Konfigurationsüberwachung verwaltet.
  
 
=Designziele=
 
=Designziele=
Zeile 30: Zeile 33:
 
*zuverlässig
 
*zuverlässig
 
*leicht erlernbar
 
*leicht erlernbar
 +
 +
=Idempotenz=
 +
*Zentrales Designprinzip von Ansible: Ein Playbook oder Modul kann beliebig oft ausgeführt werden, das Ergebnis bleibt gleich.
 +
*Ansible prüft vor jeder Änderung den Ist-Zustand und greift nur ein, wenn eine Abweichung vom Soll-Zustand besteht.
 +
*Dadurch unterscheidet sich Ansible von reinen Skript-Ansätzen (z. B. Bash), bei denen ein erneuter Aufruf oft zu Fehlern oder unerwünschten Seiteneffekten führt.
 +
 +
=Agentless-Prinzip (Push-Modell)=
 +
*Ansible benötigt auf den verwalteten Knoten keine dauerhaft laufende Agenten-Software.
 +
*Die Konfigurationsüberwachung (Control Node) verbindet sich bei Bedarf per SSH und überträgt die auszuführenden Module temporär auf den Zielknoten.
 +
*Nach Ausführung wird das Modul wieder entfernt.
 +
;Abgrenzung
 +
*Puppet und Chef arbeiten im Pull-Modell: Ein auf dem Knoten dauerhaft installierter Agent fragt periodisch beim zentralen Server nach Konfigurationsänderungen.
 +
*Vorteil des Push-Modells: geringere Angriffsfläche (kein zusätzlicher Dienst), einfacheres Onboarding neuer Knoten, keine Agenten-Wartung/-Updates nötig.
 +
 +
=Voraussetzungen auf dem Zielknoten=
 +
*SSH-Zugriff (i. d. R. Public-Key-Authentifizierung)
 +
*Python-Interpreter (wird von den meisten Modulen zur Ausführung benötigt; Ausnahme: Raw-Modul und einige Windows-Module)
 +
*Bei privilegierten Aktionen: sudo bzw. become-Rechte für den verbindenden Benutzer
 +
 
=Inventar=
 
=Inventar=
 
*Das Inventar ist eine Beschreibung der Knoten, auf die von Ansible zugegriffen werden kann.
 
*Das Inventar ist eine Beschreibung der Knoten, auf die von Ansible zugegriffen werden kann.
*Standardmäßig wird das Inventar durch eine Initialisierungsdatei beschrieben.  
+
*Standardmäßig wird das Inventar durch eine Initialisierungsdatei beschrieben.
 
*Die Konfigurationsdatei listet entweder die IP-Adresse oder den Hostnamen jedes Knotens auf.
 
*Die Konfigurationsdatei listet entweder die IP-Adresse oder den Hostnamen jedes Knotens auf.
 
*Knoten können auch gruppiert werden.
 
*Knoten können auch gruppiert werden.
 +
 +
=Ad-hoc-Kommandos=
 +
*Einzelne Befehle, ohne Playbook, direkt über die Kommandozeile ausgeführt.
 +
*Sinnvoll für schnelle Prüfungen, einmalige Aktionen oder Debugging.
 +
*Grundsyntax: Zielgruppe, ausführendes Modul und dessen Argumente werden direkt an <code>ansible</code> übergeben.
 +
 +
=Privilege Escalation (become)=
 +
*Mit <code>become</code> führt Ansible Aufgaben auf dem Zielknoten mit erhöhten Rechten aus (standardmäßig via sudo).
 +
*Steuerbar über <code>become</code>, <code>become_user</code> und <code>become_method</code> (sudo, su, doas, …).
 +
*Kann sowohl in Ad-hoc-Kommandos als auch später in Playbooks gesetzt werden.
 +
 
=Playbooks=
 
=Playbooks=
 
*Playbooks beschreiben Konfiguration, Deployment und Orchestrierung in Ansible.
 
*Playbooks beschreiben Konfiguration, Deployment und Orchestrierung in Ansible.
 
*Das Playbook-Format ist YAML, wobei jedes Playbook eine Gruppe von Hosts zu einer Reihe von Rollen zuordnet.
 
*Das Playbook-Format ist YAML, wobei jedes Playbook eine Gruppe von Hosts zu einer Reihe von Rollen zuordnet.
 +
*(wird in einem eigenen Kapitel vertieft)
 +
 +
=ansible-vault=
 +
*Werkzeug zur Verschlüsselung sensibler Daten (Passwörter, API-Keys, Zertifikate) innerhalb von Ansible-Dateien.
 +
*Verschlüsselte Dateien können bedenkenlos in einem Git-Repository versioniert werden.
 +
*Das Vault-Passwort kann interaktiv abgefragt oder aus einer Datei bzw. einem externen Skript gelesen werden, was sich für Automatisierung/CI eignet.
 +
 +
=Konfigurationsdatei (ansible.cfg)=
 +
*Steuert das Verhalten von Ansible global oder projektbezogen.
 +
*Suchreihenfolge: <code>ANSIBLE_CONFIG</code>-Umgebungsvariable → <code>./ansible.cfg</code> im aktuellen Verzeichnis → <code>~/.ansible.cfg</code> → <code>/etc/ansible/ansible.cfg</code>
  
 
=AWX=
 
=AWX=
*AWX ist eine REST-API, ein Web-Service und eine Web-basierte Konsole.  
+
*AWX ist eine REST-API, ein Web-Service und eine Web-basierte Konsole.
*Damit kann die mit Ansible verwaltete IT-Infrastruktur zentralisiert werden
+
*Damit kann die mit Ansible verwaltete IT-Infrastruktur zentralisiert werden.
 +
*AWX ist das Upstream-Projekt (Open Source) zur kommerziellen '''Red Hat Ansible Automation Platform (AAP)'''.
 +
*In Bundeswehr-/Behörden-Umgebungen begegnet einem in der Praxis eher AAP als AWX, da Red Hat dafür Support-Verträge anbietet.
 +
 
 
=Quellen=
 
=Quellen=
 
*https://de.wikipedia.org/wiki/Ansible
 
*https://de.wikipedia.org/wiki/Ansible

Aktuelle Version vom 9. Juli 2026, 12:21 Uhr

Grundsätzliches

  • Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern.
  • Es kombiniert Softwareverteilung, Ad-hoc-Kommando-Ausführung und Konfigurationsmanagement.
  • Die Verwaltung von Nodes erfolgt über SSH und erfordert keinerlei zusätzliche Software.
  • Module nutzen zur Ausgabe JSON und können in jeder beliebigen Programmiersprache geschrieben sein.
  • Das System nutzt YAML zur Formulierung wiederverwendbarer Beschreibungen von Systemen.

Geschichte

  • Ansible startete im Februar 2012 und die Plattform wurde von Michael DeHaan erstellt.
  • Anwender von Ansible sind beispielsweise das Fedora Projekt, Hewlett-Packard Deutschland, Hetzner und die Universität Thessaloniki.
  • Ansible ist enthalten in der Fedora-Linux-Distribution des Unternehmens Red Hat Inc.
  • Prinzipiell ist Ansible mit allen Unix-artigen Betriebssystemen nutzbar.
  • Ab Version 1.7 unterstützen diverse Module auch Windows über Powershell-3.0-Befehle.
  • Im Januar 2016 wurde die Version 2.0 veröffentlicht.[5]
  • Seit Version 2.10 (2020) ist Ansible in zwei Teile gesplittet: ansible-core (die Engine) und das Paket ansible (Engine + kuratierte Collections).
  • Inhalte werden seither überwiegend als Ansible Content Collections über Ansible Galaxy vertrieben statt fest im Kernpaket enthalten zu sein.

AnsibleWorks

Am 4. März 2013 wurde die Firma AnsibleWorks gegründet.

  • Sie ist maßgeblich an der Entwicklung von Ansible beteiligt.
  • Sie bietet verschiedene Produkte rund um Ansible an, darunter Support und eine Browser-basierte Benutzerschnittstelle.
  • Am 16. Oktober 2015 wurde bekanntgegeben, dass Ansible Inc. durch Red Hat Inc. übernommen und in das eigene Portfolio integriert wird.

Architektur

  • Wie die meisten anderen Konfigurationsmanagement-Systeme unterscheidet Ansible zwischen Konfigurationsüberwachung und Knoten.
  • Auf den Knoten wird die Konfigurationsänderung durchgeführt.
  • Diese Knoten werden von Ansible via SSH verwaltet.
  • Die Lage der Knoten im Inventar wird von der Konfigurationsüberwachung verwaltet.

Designziele

  • minimalistisch
  • sicher
  • zuverlässig
  • leicht erlernbar

Idempotenz

  • Zentrales Designprinzip von Ansible: Ein Playbook oder Modul kann beliebig oft ausgeführt werden, das Ergebnis bleibt gleich.
  • Ansible prüft vor jeder Änderung den Ist-Zustand und greift nur ein, wenn eine Abweichung vom Soll-Zustand besteht.
  • Dadurch unterscheidet sich Ansible von reinen Skript-Ansätzen (z. B. Bash), bei denen ein erneuter Aufruf oft zu Fehlern oder unerwünschten Seiteneffekten führt.

Agentless-Prinzip (Push-Modell)

  • Ansible benötigt auf den verwalteten Knoten keine dauerhaft laufende Agenten-Software.
  • Die Konfigurationsüberwachung (Control Node) verbindet sich bei Bedarf per SSH und überträgt die auszuführenden Module temporär auf den Zielknoten.
  • Nach Ausführung wird das Modul wieder entfernt.
Abgrenzung
  • Puppet und Chef arbeiten im Pull-Modell: Ein auf dem Knoten dauerhaft installierter Agent fragt periodisch beim zentralen Server nach Konfigurationsänderungen.
  • Vorteil des Push-Modells: geringere Angriffsfläche (kein zusätzlicher Dienst), einfacheres Onboarding neuer Knoten, keine Agenten-Wartung/-Updates nötig.

Voraussetzungen auf dem Zielknoten

  • SSH-Zugriff (i. d. R. Public-Key-Authentifizierung)
  • Python-Interpreter (wird von den meisten Modulen zur Ausführung benötigt; Ausnahme: Raw-Modul und einige Windows-Module)
  • Bei privilegierten Aktionen: sudo bzw. become-Rechte für den verbindenden Benutzer

Inventar

  • Das Inventar ist eine Beschreibung der Knoten, auf die von Ansible zugegriffen werden kann.
  • Standardmäßig wird das Inventar durch eine Initialisierungsdatei beschrieben.
  • Die Konfigurationsdatei listet entweder die IP-Adresse oder den Hostnamen jedes Knotens auf.
  • Knoten können auch gruppiert werden.

Ad-hoc-Kommandos

  • Einzelne Befehle, ohne Playbook, direkt über die Kommandozeile ausgeführt.
  • Sinnvoll für schnelle Prüfungen, einmalige Aktionen oder Debugging.
  • Grundsyntax: Zielgruppe, ausführendes Modul und dessen Argumente werden direkt an ansible übergeben.

Privilege Escalation (become)

  • Mit become führt Ansible Aufgaben auf dem Zielknoten mit erhöhten Rechten aus (standardmäßig via sudo).
  • Steuerbar über become, become_user und become_method (sudo, su, doas, …).
  • Kann sowohl in Ad-hoc-Kommandos als auch später in Playbooks gesetzt werden.

Playbooks

  • Playbooks beschreiben Konfiguration, Deployment und Orchestrierung in Ansible.
  • Das Playbook-Format ist YAML, wobei jedes Playbook eine Gruppe von Hosts zu einer Reihe von Rollen zuordnet.
  • (wird in einem eigenen Kapitel vertieft)

ansible-vault

  • Werkzeug zur Verschlüsselung sensibler Daten (Passwörter, API-Keys, Zertifikate) innerhalb von Ansible-Dateien.
  • Verschlüsselte Dateien können bedenkenlos in einem Git-Repository versioniert werden.
  • Das Vault-Passwort kann interaktiv abgefragt oder aus einer Datei bzw. einem externen Skript gelesen werden, was sich für Automatisierung/CI eignet.

Konfigurationsdatei (ansible.cfg)

  • Steuert das Verhalten von Ansible global oder projektbezogen.
  • Suchreihenfolge: ANSIBLE_CONFIG-Umgebungsvariable → ./ansible.cfg im aktuellen Verzeichnis → ~/.ansible.cfg/etc/ansible/ansible.cfg

AWX

  • AWX ist eine REST-API, ein Web-Service und eine Web-basierte Konsole.
  • Damit kann die mit Ansible verwaltete IT-Infrastruktur zentralisiert werden.
  • AWX ist das Upstream-Projekt (Open Source) zur kommerziellen Red Hat Ansible Automation Platform (AAP).
  • In Bundeswehr-/Behörden-Umgebungen begegnet einem in der Praxis eher AAP als AWX, da Red Hat dafür Support-Verträge anbietet.

Quellen