Ansible: Die Lingua Franca der Automatisierung

Wenn wir die Vorteile von Ansible aufzählen wird häufig die Tatsache erwähnt, daß Ansible es erlaubt über funktionale Grenzen hinweg zu arbeiten und damit die Silos in der Automatisierung der IT aufzulösen. Ich möchte das an einer Analogie erläutern.

Ansible als Lingua Franke der Automatisierung

Die Musiker einer Band beherschen (hoffentlich) Ihr Instrument und wissen recht häufig nicht wie die anderen Instrumente zu bedienen sind.

Eine Musikband kann nur mit einer gemeinsamen Sprache zusammenspielen

Sie können aber zusammenspielen, weil Sie sich auf eine einheitliche Sprache geeinigt haben: die Noten.

Die Noten schaffen die Basis für gemeinsames Musizieren

In der IT ist das heute leider häufig noch nicht so. Betrachten wir einmal folgende Bereiche die in Unternehmen mit unterschiedlichen Sprachen verwaltet werden müssen.

  • Linux
  • Windows
  • Netzwerk
  • Cloud
  • Datenbank
  • Anwendungsentwicklung
  • Virtualisierung

Jeder Admininstrator hat für sich bereits wahrscheinlich Automatisierungen geschaffen und ist damit in der Lage, für sich manuelle Tätigkeiten zu automatisieren. Nur wenn es darum geht über die Funktionsbereiche hinweg Automatisierungen zu ermöglichen haben wir ein Problem. Die Sprachen sind nicht kompatibel und in den meisten Fällen auch nur mit enormen Fachwissen zu verstehen.

Was passiert also in den meisten Fällen wenn eine Anwender einen neuen Server beantragt? Er erstellt ein Ticket das zuerst von der Administration der Virtualisierung bearbeitet wird die einen Server erstellt. Dann wird das Ticket weitergeleitet und das Betriebssystem installiert. Dann geht es erst zu der Rolle die eine Anwendung installiert und einrichtet. Alle Schritte verwenden eigenen Scripte mit (halb-) automatisierten Anteilen. Zu der Bearbeitungszeit kommt dann noch die “Wartezeit” zwischen den Aufgaben und das ist meistens der grösste Brocken.

Hier kann die “Sprache” der Ansible Engine helfen weil sei eine gemeinsame Sprache bereitstellt.

Ein einfaches Beispiel. Hier sind verschiedene Möglichkeiten einen Benutzer zu erstellen. Auch wenn die einzelnen Aufruf “irgendwie” ähnlich sind kommt zu den unterschiedlichen Befehlen aber für das Scripting auch noch stark unterschiedliche Sprachsyntax dazu (Bash, Powershell, Javascript)

Linux:

useradd -m -p "pass" "username"

Windows:

{ New-AdUser -Name $username$i -Path $path -Enabled $True -ChangePasswordAtLogon $true 
-AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -force) -passThru }

Cisco ios:

username "username" password "pass"

Amazon:

aws iam create-user --user-name username

Wie sehen jetzt die Aufrufe in Ansible aus?

Für Linux

- name: Add the user with a specific uid and a primary group of 'admin'
  user:
    name: username
    uid: 1040
    group: 
     - admin

Für Windows

- name: Add the user and a group of 'admin'
  win_user:
    name: username
    password: password
    state: present
    groups:
      - admin

Für Cisco ios

- name: Add the user and a user a certificate'
  ios_user:
    name: username
    nopassword: True
    sshkey: ""
    state: present

Die “Lingua Franca” der Automatisierung erlaubt es nun, daß in einer Sprache Automatisierungen über die Bereiche Cloud-, Netzwerk-, Linux- und Windows-Administration erstellt werden können. Administratoren können die Playbooks der anderen Bereiche einfach lesen, verstehen und weiterverwenden. Das reduziert Einarbeitung, Kosten und Reaktionszeiten.

So könnte dann die Einrichtung eines neuen Server komplett automatisiert durchlaufen da alle Teilverantwortlichen ihre manuellen Tätigkeiten selbst automatisieren und verantworten und dadurch ein übergreifender Ablauf automatisiert werden kann. Dieser kann dann in Minuten ohne Wartezeiten in gleicher Qualität und ohne das Risiko von manuellen Fehlern ablaufen.