ubuntuusers.de

Ansible

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Artikel für fortgeschrittene Anwender

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

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 keine zusätzliche Agent-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)

Befehl zum Installieren der Pakete:

sudo apt-get install ansible 

Oder mit apturl installieren, Link: apt://ansible

über das offizielle PPA

Je nach Ubuntu-Version erhält man unterschiedlich alte Versionen 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.

über PIP

Der Python-Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:

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

Ab Ubuntu 23.04 muss in eine virtuelle Umgebung für Python installiert werden:

python3 -m venv venv-name && source venv-name/bin/activate # venv-name durch den gewünschten Namen ersetzen
pip3 install ansible       # Programm ist nur bei aktiver virtueller Umgebung nutzbar  

Hinweis!

Fremdsoftware kann das System gefährden.

aus dem Quellcode

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] 

    Der Ad-hoc-Modus eignet sich dazu, bei Bedarf Konfigurationsänderungen an einem Host oder einer Gruppe von Hosts vorzunehmen.

  • Ausführung eines Ansible-Playbooks:

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

    Playbooks sind dazu geeignet, Konfigurationsdeklarationen besonders einfach wiederzuverwenden und Ansible zur Orchestrierung zu nutzen.

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

Inventar

Ansible verwaltet zu kontrollierende bzw. zu steuernde Systeme in einem Inventar. Ein statisches Inventar ist eine einfache 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
19
20
21
22
23
24
25
26
27
28
29
30
---
- name: setup apache
  hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root

  tasks:
  - name: ensure apache is at the latest version
    ansible.builtin.apt:
      name: apache2
      state: latest
  - name: write the apache config file
    ansible.builtin.template:
      src: /srv/httpd.j2
      dest: /etc/httpd.conf
    notify:
      - restart apache
  - name: ensure apache is running (and enable it at boot)
    ansible.builtin.service:
      name: apache2
      state: started
      enabled: true

  handlers:
    - name: restart apache
      ansible.builtin.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 restart 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.

Diese Revision wurde am 9. Juli 2024 11:07 von marsei85 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, System