In der Welt von DevOps ist Ansible eine der führenden Open-Source-IT-Automatisierungslösungen. Für die IT-Automatisierung muss man nicht unbedingt einen Hochschulabschluss haben. Mit Ansible, dem größten unabhängigen Anbieter von IT-Automatisierungslösungen, sind DevOps- und IT-Teams dreimal so produktiv und verbringen dreimal weniger Zeit mit ihren IT-Automatisierungsprojekten. Ob Cloud, Hybrid, physisch oder virtuell, Ansible bietet einfache IT-Automatisierung, die sich wiederholende Aufgaben beendet und DevOps-Teams für strategischere Aufgaben freisetzt.

Ansible ist eine einfache IT-Automatisierungsplattform, die von mehr als 100.000 Unternehmen weltweit genutzt wird. Sie ermöglicht es IT-Teams, Befehle auszuführen und Anwendungen, Geräte und Infrastruktur zuverlässig und wiederholt zu verwalten. Ansible unterstützt IT-Teams bei der Ausführung von Befehlen und der Automatisierung von Anwendungen, Geräten und der Infrastruktur mit einfachen, bewährten Playbooks. In diesem Blog wird erläutert, was Ansible ist, wie es funktioniert und wie dieses einfache IT-Automatisierungstool wiederkehrende Aufgaben beendet.

Voraussetzungen

Wenn Sie keine Cloud-Management-Plattform verwenden, müssen Sie sicherstellen, dass Sie einen Rechner verwenden, auf dem Ansible ausgeführt werden kann. Ansible funktioniert mit vielen Maschinen und Betriebssystemen, aber Windows wird nicht unterstützt. Sie können jeden Rechner mit Python 3.8 oder neuer verwenden, einschließlich der Rechner von Red Hat, Debian, CentOS und macOS. (Obwohl es auch möglich ist, Ansible mit Python 2.7 zu verwenden, ist Python 3.8 jetzt der Systemstandard).

Installation und Einrichtung

Um mit Ansible zu experimentieren und Ihre Serverinfrastruktur zu verwalten, müssen Sie die Ansible-Software auf dem Rechner installieren, der als Kontrollknoten dienen soll. Sie können die neueste Version mit dem Paketmanager Ihres Betriebssystems wie apt unter Ubuntu oder yum unter RHEL usw. installieren oder einfach den PIP-Paketmanager verwenden. 

Aber zuerst sollten wir, auch wenn es nicht notwendig ist, eine virtuelle Umgebung installieren, die es uns erlaubt, die Python-Bibliotheken separat zu installieren, ohne irgendetwas zu beeinträchtigen. So installieren oder aktualisieren Sie Ihre virtuelle Umgebung mit:

sudo pip install -U virtualenv

Nach erfolgreicher Installation können wir Ansible in eine virtuelle Umgebung einbinden, indem wir zunächst eine virtuelle Umgebung erstellen und dann aktivieren.

virtualenv .venv
source .venv/bin/activate

Wenn wir jetzt irgendetwas installieren, wird es innerhalb dieser virtuellen Umgebung sein. Installieren Sie nun ansible mit dem folgenden Befehl:

pip install -U ansible

Bestandsaufnahme konfigurieren

Da wir in diesem Tutorial eine virtuelle Umgebung verwenden, werden wir einige Konfigurationsdateien, die mit Ansible geliefert werden, nicht haben, aber wir brauchen sie auch nicht. Wir machen so weiter – wir können die Konfigurationsdateien nach Bedarf in unserem lokalen Verzeichnis erstellen. Folglich benötigen wir keine Konfigurationsdateien in /etc oder an anderen Orten.

Mit Ansible können wir eine Inventardatei erstellen und darin festlegen, welche Server oder Systeme verwaltet werden sollen. Diese Datei kann beliebig benannt werden, heißt aber normalerweise „hosts“. Ansible kann sowohl auf entfernten Servern als auch lokal ausgeführt werden. Ich verwende Ansible, um denselben Server zu verwalten, auf dem ich Ansible verwende, was eine gültige Art ist, Ansible zu verwenden. Es ist nicht der Hauptanwendungsfall, aber das macht es nicht ungültig. 

Nun setzen wir die hosts-Datei so, dass sie unter local auf einen lokalen Rechner und unter remote auf einen entfernten Server zeigt:

# Ansible/hosts
[local]
127.0.0.1

[remote]
192.168.1.2

Um sicherzugehen, dass alles funktioniert, lassen wir eine Aufgabe auf dem Server laufen.

# Run against localhost
ansible -i ./hosts --connection=local local -m ping

Wenn alles funktioniert hat, erhalten Sie etwa folgende Ergebnisse:

Die Ausgabe, die wir von Ansible zurückbekommen haben, ist ein JSON-Dokument, das uns sagt, ob wir das Gerät anpingen konnten und ob es sich anders verhalten hat oder nicht.

Wir überprüfen auch unseren Remote-Server mit dem folgenden Befehl:

# Run against remote server
ansible -i ./hosts remote -m ping

Sie sind einfach zu schreiben und zu verstehen, aber Sie haben die Flexibilität, komplexere Konfigurationen zu erstellen, indem Sie Bereiche von Hosts, mehrere Gruppen, Variablen usw. definieren. Mehr darüber können Sie hier lesen. 

Konfigurieren von Playbooks 

Lassen Sie uns nun zu den Playbooks übergehen. Playbooks sind die Essenz von Ansible. Playbooks können mehrere Tasks ausführen und bieten einige fortgeschrittene Funktionen, die uns bei der Verwendung von Ad-hoc-Befehlen entgehen würden. Hier erstellen Sie die Anweisungen, die Sie schreiben, um eine Blaupause für Ihre Hardware-Infrastruktur zu definieren. Auf diese Weise werden Sie die meiste Zeit mit Ansible arbeiten.

Für den Anfang können wir ein einfaches Playbook erstellen, mit dem wir prüfen, ob eine Anwendung in unserem System vorhanden ist oder nicht; kopieren Sie einfach die folgende Zeile und fügen Sie sie in eine Datei mit der Erweiterung .yml ein:

---
- name: playbook to install software  #name the playbook itself
  become: true  #this is to give root privileges to the playbook
  hosts: all  #this is the user on the machine on which this playbook will work on
  connection: local

  tasks:  #this is a task schema under which we define the tasks to perform, a playbook can also handle multiple tasks
    - name: ensure software is installed  #define the tasks for the playbook
      apt:  #define the module you want to use
        name: ansible  #name of the application to work on
        state: present  #check the state of the application
        update_cache: true  #this is to cache the information performed by the playbook

    - debug: var=output.stdout_lines

Hinweis: In diesem Spielbuch habe ich die Hauptkonfiguration dieses Spielbuchs in der oberen Hälfte und die Aufgaben in der unteren Hälfte definiert. Außerdem muss die Variable connection: nur bei lokaler Ausführung definiert werden. 

Ich habe kommentiert, wofür jede Zeile im Code selbst verwendet wird. Nachdem wir also das obige Codebeispiel gesehen haben, können wir verstehen, dass das Playbook nur ein Satz von Anweisungen ist, die die verschiedenen Knoten konfigurieren, die Sie haben, und jeder dieser Sätze von Anweisungen ist in einer Sprache namens YAML geschrieben. 

Prüfen wir nun, ob das funktioniert, indem wir folgenden Befehl ausführen:

ansible-playbook -i hosts -K playbook.yml

Hinweis: Hier führe ich Ansible nur auf meinem System aus. Wenn Sie es auf einem entfernten Server laufen lassen wollen, können Sie einfach die Hosts speziell angeben. 

Und wie Sie sehen können, funktioniert es perfekt. Wir erhalten einige hilfreiche Rückmeldungen in Form der Aufgaben, die Ansible ausführt, und deren Ergebnis. Hier sehen wir, dass alles gut gelaufen ist, aber nichts geändert wurde.

Letzte Worte

In diesem Tutorial werfen wir einen Blick darauf, was Ansible ist, wie es funktioniert und wie dieses einfache IT-Automatisierungstool wiederkehrende Aufgaben beendet. Ansible ist ein relativ neues Tool, das die Automatisierung von Aufgaben und das Konfigurationsmanagement einfacher denn je macht. Es gibt viele verschiedene Methoden und Tools, die Ihnen bei der Verwaltung Ihrer Konfigurationen helfen, aber Ansible zeichnet sich dadurch aus, dass es einfach zu erlernen und anzuwenden ist. Es gibt auch eine großartige Dokumentation dazu, die Sie sich ansehen können, und wenn Sie daran interessiert sind, würde ich es Ihnen sehr empfehlen!