Automatisierung mit Ansible - Das Open Source Werkzeug

Orchestrierung von IT-Systemen

programmierung

Werden Administrationsaufgaben, die Automatisierung von Software, und ganzen Infrastrukturen immer wieder benötigt, oder sollen automatisiert durchgeführt werden, bietet es sich an, diese Aufgaben über eine Automatisierungssoftware durchzuführen.

Ein Konfigurationsmanagementsystem kommt immer dann zum Einsatz, wenn eine zuvor definierte Konfiguration auf einem Netzwerkhost umgesetzt werden soll. Beispielsweise können so Konfigurationsdateien oder Softwarepakete ausgerollt werden. Selbstverständlich können aus der Ferne mit Ansible auch Dienste gestartet oder beendet werden.

 

Ansible hat sich in den letzten Jahren zum de facto Industrie-Standard entwickelt. Das Automatisisierungs-Werkzeug bietet Softwareverteilung, ein Konfigurationsmanagement und eine Ad-hoc-Kommando Ausführungsmöglichkeit. Die Verwaltung von Rechnern und Servern im Netzwerk erfolgt agentenlos über SSH. Dies unterscheidet Ansible von den meisten anderen Tools. Die in sogenannten Playbooks definierten Aufgaben beschreiben Konfiguration, Deployment und Orchestrierung in Ansible. Erstellt werden diese mit YAML-Dateien.

Die Playbooks ermöglichen die Ausführung von beliebigen Shell-Kommandos auf fremden Systemen. In Ansible ist ein Chain-Error-Handling voll integriert und eines der wichtigsten Vorteile gegenüber normalen Skripten. Hierdurch sind Ihre Systeme bei jedem Konfigurations-, bzw. Automatisierungsschritt integer und im Fehlerfall werden entsprechende Rollbacks vollautomatisch durchgeführt.

Für Ansible stehen standardmäßig sehr viele Module zur Verfügung. Diese ermöglichen es direkt die unterschiedlichsten Aufgaben durchzuführen (wie beispielsweise die Softwareinstallation über das yum / dnf -Modul). Die in einem Modul durchzuführenden Aufgaben werden in einzelnen Tasks im YAML-Format beschrieben. Diese Tasks lassen sich zu so genannten Rollen zusammenfassen, wobei eine Rolle alle Tasks, die notwendig sind, enthalten kann. Mehrere Tasks in einer Rolle kann dazu dienen einen Apache-Webserver automatisch zu installieren und konfigurieren.
In einem Playbook können dann verschiedene Rollen zusammengefasst werden. Ein Playbook beschreibt dann beispielsweise alle Rollen bzw. Tasks, die notwendig sind, um einen LAMP-Stack auszurollen. So ist nur einmal Aufwand notwendig das entsprechende Playbook zusammenzustellen. Die inbetriebnahme des neuen Servers geschieht dann automatisiert.

Hierbei lassen sich die Aufgaben über Variablen dynamisch gestalten und über ein sogenanntes Inventory auf dem bzw. den gewünschten Servern ausführen. Somit ist es kein Problem mit Ansible einzelne oder auch große Serverfarmen einfach zu steuern.

Die Möglichkeiten sind fast grenzenlos.

 

entwicklung-prozess

Vorteile:

  • Zentrale Systemkonfiguration
  • Fehlerreduktion
  • Wirtschaftlichkeit und Effizenzsteigerung
  • Nachvollziehbarkeit
  • Schneller Rollout von Systemen