Ansible
Was ist Ansible?
Ansible ist eine Open-Source-IT-Automatisierungsplattform von Red Hat. Sie ermöglicht es Unternehmen, viele IT-Prozesse zu automatisieren, die normalerweise manuell durchgeführt werden, einschließlich Bereitstellung, Konfigurationsmanagement, Anwendungsbereitstellung und Orchestrierung.
Die Red Hat Ansible Automation Platform ist eine von Red Hat unterstützte Plattform, die auf Ansible Core aufbaut. Sie bietet ein agentenloses Framework zum Erstellen, Testen und Verwalten von Automatisierungsinhalten. Diese in der Programmiersprache Python geschriebene IT-Automatisierungssoftware bietet Unternehmen eine flexible und sichere Möglichkeit, viele IT-Aufgaben und komplexe Prozesse zu automatisieren. Sie wird auf einem Command Line Interfaceausgeführt (CLI). Die als Abonnement erhältliche Plattform verfügt über zahlreiche Komponenten, die in einem einzigen, optimierten Produkt integriert sind.
IT-Experte Stuart Burns erklärt die Grundlagen von Ansible.
Merkmale der Ansible Automation Platform
Die Komponenten der Ansible Automation Platform haben jeweils einen bestimmten Zweck und einen klar definierten Anwendungsbereich.
Automatisierungsausführungsumgebungen
Diese Umgebungen sind als Container verpackt. Sie sind definiert, konsistent und portabel und ermöglichen die Ausführung von Ansible Playbooks und Rollen.
Automatisierungs-Controller
Der Automatisierungs-Controller ist die Steuerungsebene für die Ansible-Plattform. Der Controller hilft bei der Standardisierung von Automatisierungsbereitstellung, Initiierung, Delegation und Audits. Der Controller ist in die Plattform integriert, um die Automatisierung zu verwalten, und stellt die Web-UI und die Anwendungsprogrammierschnittstelle (API) dar. Er basiert auf dem Upstream-Projekt AWX.
Automatisierungs-Mesh
Das Automation Mesh ermöglicht es Unternehmen, in großem Umfang und auf eine Cloud-native Weise zu automatisieren. Es vereinfacht die Planung verteilter, dezentraler und komplexer Automatisierungsimplementierungen und bietet Transparenz, Kontrolle und Berichtsfunktionen. Die Ansible-Plattform nutzt das Automatisierungs-Mesh, um Automatisierungsaufträge auf Ausführungsknoten (Run Modules) zu verteilen und so die Ausführungskapazität für Geräte zu erhöhen, die keine Module ausführen können.
Ansible Content Collections und Content Tools
Ersteller und Entwickler von Ansible-Inhalten können Ansible Content Collections oder zertifizierte Module verwenden, um Automatisierungen schneller und effizienter bereitzustellen. Content Tools vereinfachen den Prozess der Erstellung und Bereitstellung von Ausführungsumgebungen.
Automatisierungs-Hub
Mit dem Ansible Automation Hub können Benutzer Red Hat-unterstützte Inhalte in anspruchsvollen Umgebungen schnell finden, verwenden und erweitern.
Ansible-Architektur: Nodes und Module
Die Architektur von Ansible basiert auf dem Konzept einer Control Node (Kontrollknoten) und einer Managed Node(verwalteter Knoten). Die Plattform wird vom Kontrollknoten aus ausgeführt, wo ein Benutzer den Befehl ansible-playbook ausführt. Es muss mindestens ein Kontrollknoten vorhanden sein; es kann auch ein Backup-Kontrollknoten existieren. Die Geräte, die durch den Kontrollknoten automatisiert und verwaltet werden, werden als verwaltete Knoten bezeichnet. Ein Microsoft-Windows-Server ist ein Beispiel für einen verwalteten Knoten.
Ansible automatisiert Linux und Windows, indem es eine Verbindung zu verwalteten Knoten herstellt und kleine Programme, so genannte Ansible-Module, ausgibt. Ansible führt diese Module, bei denen es sich um die Ressourcenmodelle des gewünschten Systemzustands handelt, standardmäßig über Secure Socket Shell (SSH) aus und entfernt sie nach Abschluss. Es besteht keine Notwendigkeit, eine Anwendung oder einen Dienst auf dem verwalteten Knoten zu installieren, da Ansible agentenlos ist und mit Geräten kommunizieren kann.
Wenn Module nicht ausgeführt werden können, zum Beispiel zur Automatisierung von Netzwerkgeräten und anderen IT-Geräten, wird Ansible auf dem Kontrollknoten ausgeführt.
Wie funktioniert Ansible?
Für den Transport verwendet Ansible OpenSSH, eine Open-Source-Implementierung des SSH-Protokolls, das eine sichere Verschlüsselung für Remote-Anmeldungen und Dateiübertragungen bietet. Neben SSH-Schlüsseln werden in Ansible auch andere Transporte, Pull-Modi und Authentifizierungsmechanismen unterstützt.
Ansible verwendet von Menschen lesbare YAML-Vorlagen, so genannte Playbooks, mit Anweisungen, die einen Plan für Automatisierungsaufgaben enthalten. Mithilfe von Playbooks können Benutzer wiederkehrende Aufgaben so programmieren, dass sie automatisch ausgeführt werden, ohne dass sie dafür geschult werden oder eine fortgeschrittene Programmiersprache erlernen müssen. Außerdem werden die Playbooks auf einem Satz, einer Gruppe oder einer Klassifizierung von Hosts ausgeführt, die ein Ansible-Inventar bilden.
Ansible überträgt Anwendungscode, Programme und Anweisungen zur Einrichtung der IT-Infrastruktur über Module an verwaltete Knoten, bei denen es sich um Clients, physische Server, virtuelle Maschinen oder Cloud-Instanzen handeln kann. Es stellt eine Verbindung zu verwalteten Knoten in einem Netzwerk her und sendet ein Ansible-Modul an diesen Knoten, führt das Modul dann über SSH aus und entfernt es, wenn es fertig ist. Einfach ausgedrückt, stellt Ansible eine Verbindung zu dem her, was ein Benutzer automatisieren möchte, und startet dann Programme, die Anweisungen ausführen.
Die Module werden auf der Grundlage der Konnektivitätsanforderungen, der Schnittstelle und der Befehle des Endpunkts geschrieben. Es sind keine zusätzlichen Server, Daemons oder Datenbanken erforderlich, sodass die Benutzer mit ihren bevorzugten Terminalprogrammen, Texteditoren und Versionskontrollsystemen arbeiten können, um Änderungen vorzunehmen und zu verfolgen.
Was sind Ansible-Playbooks?
In Ansible stellen Playbooks eine leistungsstarke und dennoch einfache Automatisierungssprache dar. Sie ermöglichen Ansible-Benutzern die Verwendung von Modulen zur Durchführung von Automatisierungsaufgaben. Jedes Ansible-Playbook ist eine von Menschen lesbare und selbstdokumentierende Konfigurationsdatei. Es ist in YAML geschrieben und enthält Anweisungen, um einen verwalteten Knoten in den gewünschten Zustand zu bringen. Playbooks sind außerdem idempotent, das heißt sie können auf einem System jederzeit auf die gleiche Weise und mit dem gleichen Resultat ausgeführt werden, ohne es negativ zu beeinflussen.
Ansible-Playbooks können einfach sein, zum Beispiel um einen Apache-HTTP-Server auf einem Knoten in einer Webservergruppe zu installieren, oder komplex, zum Beispiel um ein ganzes Netzwerk von verwalteten Knoten zu orchestrieren. Komplexe Playbooks können Konditionale und Variablen enthalten. Dennoch sind sie in der Regel kurz, lesbar und übersichtlich, da die Ansible-Module den Großteil der echten Arbeit übernehmen.
Wichtige Anwendungsfälle für Ansible
Laut Red Hat ermöglicht Ansible Unternehmen, die Automatisierung im gesamten Unternehmen mit Kontrolle und Einblick zu skalieren. Es ist besonders nützlich für diese Anwendungsfälle:
Infrastrukturbereitstellung
Ansible ersetzt Ad-hoc-Skripting oder manuelles Infrastrukturmanagement durch einen automatisierten und wiederholbaren Prozess. Da alles in einfacher Skriptform geschrieben ist, ermöglicht es Unternehmen die Einführung von Infrastructure as Code (IaC).
Mit Ansible-Playbooks können Benutzer eine Instanz erstellen und diese für mehrere zusätzliche Server verwenden, die dieselben Infrastrukturdetails nutzen. Nachdem die Umgebung bereitgestellt wurde, kann sie im Rahmen des IT-Betriebslebenszyklus einfach konfiguriert werden. Durch die Ansible-Automatisierung entfällt die Notwendigkeit, Hunderte oder Tausende von Servern manuell bereitzustellen.
Konfigurationsmanagement
Routinemäßige IT-Aufgaben lassen sich mit Ansible leicht automatisieren. Es ist minimal, konsistent, zuverlässig und sicher. Und es verwendet einfache Dateninfrastrukturbeschreibungen, die von Menschen und Maschinen gelesen werden können. Diese Fähigkeiten ermöglichen es Systemadministratoren, Entwicklern und IT-Managern, routinemäßige Konfigurationsaufgaben leicht zu verstehen und zu automatisieren.
Anwendungsbereitstellung
Ansible bietet ein gemeinsames Framework für die Konfiguration von Diensten, die Bereitstellung von Anwendungen, einschließlich Multi-Tier-Anwendungen, und die einfache, zuverlässige und konsistente Bereitstellung von Anwendungsartefakten. Es besteht keine Notwendigkeit, benutzerdefinierten Code zu schreiben, um die Anwendungsbereitstellung zu automatisieren. Stattdessen müssen Teams nur einfache Aufgabenbeschreibungen in YAML-Dateien schreiben, die einfach zu lesen, zu implementieren und bei Bedarf zu aktualisieren sind.
Vorteile und Nutzen von Ansible
Ansible ermöglicht es Systemadministratoren, Entwicklern, Architekten und DevOps-Teams, Aufgaben wie Softwareinstallationen, Infrastrukturbereitstellung, Systemkonfigurationen, Updates und Patches zu automatisieren. Ansible kann auch erweiterte Workflows für die Anwendungsbereitstellung orchestrieren. Ansible verbessert die Sicherheit und Compliance und erleichtert die Bereitstellung und gemeinsame Nutzung der Automatisierung im gesamten Unternehmen.
Weitere mögliche Vorteile, die Unternehmen von Ansible erwarten können, sind
- Reichhaltige und visuelle Einblicke zur Identifizierung, Fehlerbehebung und Lösung von Betriebs- und Sicherheitsproblemen im gesamten IT-Ökosystem.
- Ein kollaborativer und skalierbarer Ansatz für die Unternehmensautomatisierung.
- Kodifizierung der Infrastruktur sowohl für lokale als auch für Cloud-Implementierungen.
- Einfache Übertragung der Automatisierung in mehrere Domänen und für eine Reihe von Anwendungsfällen.
- Analyse-, Richtlinien- und Governance- sowie Content-Management-Tools zur Rationalisierung und Skalierung der Automatisierung.
Wer sind die Nutzer von Ansible?
Folgende Unternehmensanwender können ebenfalls von der Ansible-Plattform profitieren:
- Automatisierungsarchitekten können Ansible verwenden, um die Automatisierung auf das gesamte Unternehmen auszuweiten und Automatisierungsrichtlinien und Governance zu verwalten.
- Automatisierungsentwickler können Ansible-Playbooks, -Rollen, -Module und vorgefertigte Automatisierungsinhalte für Entwicklungsanwendungsfälle erstellen.
- Automatisierungsadministratoren können den Automation Controller und den Automation Hub von Ansible verwenden, um Automatisierungsprojekte zu verwalten und gemeinsam zu nutzen.
- Betriebs- und DevOps-Teams können sich wiederholende Aufgaben automatisieren und so Zeit für strategischere, höherwertige Aufgaben gewinnen.
Ansible vs. Chef, Puppet und andere Tools
Mehrere Produkte bieten konkurrierende Ansätze für die Automatisierung von Infrastrukturen, Anwendungsbereitstellung und Konfiguration. Ansible und seine Konkurrenten offerieren verschiedene Open-Source-, unterstützte Open-Source- und proprietäre kommerzielle Angebote, die IT-Organisationen vor der Auswahl eines Tools untersuchen sollten.
Diese Produkte konkurrieren zwar um Benutzer, aber IT-Organisationen setzen sie auch gemeinsam ein. Beispielsweise führt Puppet Konfigurationen aus, die dann von Ansible orchestriert werden, oder die Entwickler verwenden Chef, während das Betriebsteam Ansible einsetzt.
Zu den Konkurrenten von Ansible gehören die folgenden:
- Chef. Open-Source-Systemmanagement- und Cloud-Infrastruktur-Automatisierungsplattform.
- Puppet. Open-Source-Systemverwaltungs-Tool, das die Konfigurationsverwaltung zentralisiert und automatisiert.
- PowerShell Desired State Configuration (DSC). PowerShell-Funktion, die die Konfiguration von Windows- und Linux-Betriebssystemen automatisiert.
- SaltStack. Konfigurationsmanagement- und Orchestrierungs-Tool für die Bereitstellung von IT-Infrastrukturen über ein zentrales Repository.
- Terraform. DevOps-Open-Source-IaC-Tool für die programmatische Bereitstellung physischer Ressourcen zur Ausführung von Anwendungen.
- Vagrant. Automatisiert die konsistente Erstellung eines kleinen Satzes virtueller Maschinen, meist zur Replikationvon Entwicklungsumgebungen.
Ansible und Salt verwenden YAML, während Chef JSON und Ruby verwendet und Puppet auf einer deklarativen domänenspezifischen Sprache basiert. PowerShell DSC-Benutzer müssen die PowerShell-Programmierung beherrschen. Ansible verwendet einen agentenlosen Ansatz, während die konkurrierenden Angebote von Chef, Puppet, SaltStack und PowerShell DSC Agenten installieren, obwohl bestimmte agentenlose Konfigurationen möglich sind.
Konfigurationsmanagement-Tools, einschließlich Ansible, konkurrieren auch mit Docker und anderen Orchestrierungstechnologien, um Arbeitslasten in Containern zu verwalten. Ein Ansible-Benutzer kann einen Containererstellen und die Nutzlast des Containers definieren. Ansible Container ist ein Open-Source-Projekt, das Container erstellt, bereitstellt und verwaltet.
Es gibt zwar auch Überschneidungen mit Technologien zur kontinuierlichen Integration wie Jenkins, aber Ansible und seine Konkurrenten arbeiten mit diesen Tools zusammen und übernehmen die Bereitstellung, sobald die CI-Pipelinefertigen Code liefert.