Ansible

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Starten von Programmen

  3. Ein Terminal öffnen

  4. Root-Rechte

  5. Einen Editor verwenden

Inhaltsverzeichnis
  1. Installation
  2. Bedienung
    1. Inventar
    2. Playbooks
  3. Beispiele
    1. Dokumentation anzeigen
    2. Ad-hoc-Kommando ausführen
    3. Ansible-Playbooks ausführen
  4. Links

Ansible_logo.png Ansible ist ein Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern. Es kombiniert Softwareverteilung, Ad-hoc-Kommando-Ausführung und Konfigurationsmanagement. Es verwaltet Netzwerkcomputer unter anderem über SSH und erfordert keinerlei zusätzliche Software auf dem zu verwaltenden System. Module nutzen zur Ausgabe JSON und können in jeder beliebigen Programmiersprache geschrieben sein. Das System nutzt YAML zur Formulierung wiederverwendbarer Beschreibungen von Systemen.

Installation

aus den Ubuntu-Paketquellen

Ansible kann direkt aus den offiziellen Quellen installiert werden [1]

  • ansible (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ansible 

sudo aptitude install ansible 

über die offizielle PPA

Je nach Ubuntu-Version ist erhält man eine ältere Version von Ansible. Für aktuelle Versionen steht ein PPA zur Verfügung.

Adresszeile zum Hinzufügen des PPAs:

  • ppa:ansible/ansible

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der Wiki/Vorlagen/PPA/ppa.png PPA-Beschreibung des Eigentümers/Teams ansible zu entnehmen.

Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.

über PIP

Wer die neueste Version installieren möchte, kann das Programm über den Python-Paketmanager pip installieren:

Hinweis!

Fremdsoftware kann das System gefährden.

pip3 install --user ansible       # Programm wird nur für den aktuellen Nutzer installiert  

aus dem Quellcode

Experten-Info:

Wer stets die aktuelle Entwicklungsversion nutzen möchte, kann die Software auch direkt aus dem GitHub-Repository ansible beziehen.

Bedienung

Ansible wird aus einem Terminal heraus genutzt. [3] Dabei kann Ansible in zwei Modi genutzt werden.

Ausführung eines Kommandos im Ad-Hoc-Modus:

ansible <host-pattern> [-m module_name] [-a args] [options] 

Ausführung eines Ansible-Playbooks:

ansible-playbook <filename.yml> ... [options] 

Die Dokumentation zu Ansible findet man im Internet in der Ansible Documentation 🇬🇧 oder in den Manpages auf dem lokalen System.

1
2
3
man ansible # Führt Tasks auf einem oder mehreren entfernten Hosts aus
man ansible-playbook # Ausführung von Ansible-Playbooks
man ansible-doc # Dokumentation zu Ansible-Modulen anzeigen

Während sich der Ad-hoc-Modus eignet um bei Bedarf Konfigurationsänderungen an einem Host oder einer Gruppe von Hosts vorzunehmen, sind Playbooks dazu geeignet Konfigurationsdeklarationen besonders einfach wiederzuverwenden und Ansible zur Orchestrierung zu nutzen.

Inventar

Ansible verwaltet zu kontrollierende bzw. zu steuernde Systeme in einem Inventar. Ein statisches Inventar ist eine einfach Textdatei, welche mit einem Texteditor erstellt und bearbeitet werden kann. [5] Hosts können im Inventar zu Gruppen zusammengefasst werden, wie das folgende Beispiel veranschaulicht:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
mail.example.com

[webservers]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com
three.example.com

[dc1]
merkur.example.com
venus.example.com

[dc2]
neptun.example.com
uranus.example.com

[dc:children]
dc1
dc2

Bei obigen Inventar handelt es sich um ein simples Beispiel. In der offiziellen Dokumentation 🇬🇧 finden sich weitere Anwendungsbeispiele, wie z.B. die Verwendung von Host- und Gruppen-Variablen im Inventar.

Playbooks

Playbooks sind das Herzstück von Ansible. Sie werden verwendet, um entfernte Rechner zu konfigurieren und um Deployments durchzuführen. Playbooks werden in YAML-Syntax unter Verwendung eines Texteditors geschrieben. [5] Zur Veranschaulichung soll folgendes Beispiel aus der offiziellen Dokumentation 🇬🇧 dienen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
  tasks:
  - name: ensure apache is at the latest version
    apt: name=apache2 state=latest
  - name: write the apache config file
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running (and enable it at boot)
    service: name=apache2 state=started enabled=yes
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

Im Playbook wird zuerst die Gruppe von Hosts definiert, auf denen die folgenden Tasks ausgeführt werden sollen. In diesem Fall ist dies die Gruppe webservers aus dem Inventar. Anschließend werden zwei Variablen definiert und der Benutzer (root) spezifiziert, welcher für die SSH-Verbindung zu den Zielsystemen verwendet wird. Darauf folgt eine Sektion mit Tasks. Hier wird definiert was auf den Zielsystemen getan werden soll. Dabei werden die Aufgaben in der Reihenfolge abgearbeitet, wie sie im Playbook spezifiziert sind. Die Ausführung erfolgt parallel auf den als Zielsystemen definierten Hosts. Das obige Playbook führt dabei folgende Tasks auf den Hosts der Gruppe webservers aus:

  1. Stellt sicher, dass das Paket apache2 in der aktuellsten Version installiert ist

  2. Erstellt die Apache-Konfigurationsdatei aus einer Vorlage und benachrichtigt einen handler namens apache

  3. Stellt sicher, dass der Apache-Dienst aktiviert und gestartet ist

  4. Unter handlers werden Tasks definiert, welche nur ausgeführt werden, wenn sie von einem anderen Task im Playbook ausgelöst werden (siehe Handlers 🇬🇧).

Beispiele

Die folgenden Beispiele sollen die Nutzung von Ansible in den verschiedenen Modi verdeutlichen.

Dokumentation anzeigen

Die Dokumentation zum Ansible-Modul ping im Terminal [3] anzeigen:

ansible-doc ping 

Ad-hoc-Kommando ausführen

Folgendes Kommando führt das Modul ping auf dem Host foo.example.com aus:

ansible foo.example.com -m ping 

Folgendes Kommando führt das Modul ping auf der Gruppe webservers aus:

ansible webservers -m ping 

Ansible-Playbooks ausführen

ansible-playbook example.yml 

Obiges Kommando führt das Ansible-Playbook namens example.yml aus.