Ein kleines Einmaleins für Ansible

Was genau ist Ansible?

Ansible ist ein Opensource Werkzeug zur Automatisierung von manuellen Tätigkeiten im Bereich der Administration von Informationstechnologien. Die können sein Arbeitsplatzcomputer, Server, Drucker, Telefonanlagen, Netzwerkkomponenten oder Ressourcen aus der Cloud.

Ansible Core

Die Kernkomponente von Ansible ist eine Befehlszeilenkommando das über öffentliche Quellen auf Github.com installiert und ohne weitere Kosten genutzt werden kann.

Ansible Tower

Ansible Tower ist eine grafische Oberfläche welche die Funktionen von Ansible Core in einem Unternehmen einer breiten Nutzung mit unterschiedlichen Rollenkonzepten und Reporting bereitstellt. Ansible Tower benötigt eine Subscription von Red Hat.

Wie arbeitet Ansible

Ansible arbeitet ohne Agenten auf den Zielsystemen und braucht nur eine gesicherte Verbindung über ssh / WinRM und die Programmiersprache Python. Beides sind Komponenten die auf fast allen Systemen bereits vorhanden sind.

Ansible Adhoc Kommandos

Ansible erlaubt es über einen Befehl auf einer Vielzahl von Systemen eine Aktion auszuführen. Der folgende Befehl installiert auf allen Server der Gruppe der externen Server in Produktion ein bestimmtes Programm:

ansible production-extern -m apt -a 'name=postfix state=present'

Ansible Playbooks

Die sogenannten Playbooks stellen das Kernelement von Ansible da. Hierbei handelt es sich um Sammlungen von Ansible Befehlen und Aufgaben welche die Konfiguration auf den Zielsystemen erzeugen sollen. Diese Playbooks sind “lesbar” und beschreiben den Zielzustand auf dem System.

Ein einfaches Beispiel für ein Playbook installiert einen Webserver auf einer Gruppe von Servern, erstellt eine Konfiguration und started diesen Webserver.

--name: Webserver for Eventmanagement 
  hosts: Ticketserver
  tasks:
    - name: install nginx 
      apt:
          name: nginx
          state: present
    - name: Create Webserver Configuration
      template:
        src: templates/nginx-ticekt.conf.j2
        dest: "/etc/nginx/sites-available/.conf"
   - name: Start nginx
     service:
         name: nginx
         state: started 

Diese Playbooks werden dann auf der Befehlszeile gestartet:

ansible-playbook nginx.yaml

Idempotency

Der Begriff “Idempotency” sagt aus, das Ansible Playbooks den Zustand des Zielsystemsbeschreiben sollen. Der Aufruf eines Playbooks erzeugt nur dann eine Aktion wenn der Zielzustand nicht vorhanden ist. Es werden also die Aktionen nicht einfach hintereinander ausgeführt sondern es wird zuerst geprüft ob der Zielzustand vorhanden ist und nur wenn dies nicht so ist werden die Aktionen ausgeführt.

Auf diese Weise wird sichergestellt das eine wiederholte Ausführung immer wieder das gleiche Resultat haben wird.

Skalierbarkeit

Ansible und Ansible Tower kann sowohl in kleinen Umgebungen sinnvoll eingesetzt werden als auch in Umgebungen mit mehreren tausenden Systemen.

Woher kommt der Name?

Der Begriff soll aus dem Roman “Rocannon’s World” von Ursula K. Le Guin aus dem Jahr 1966 kommen und dort für ein Instant Messaging Kommunikationssystem stehen.

Ansible