Ansible ist ein in Python geschriebenes agentenloses Automatisierungstool. Es stellt über SSH eine Verbindung zu Ihren Kunden her und ermöglicht Ihnen die Automatisierung langweiliger, sich wiederholender Aufgaben, die Sie nicht erledigen möchten. Es ermöglicht Ihnen, eine von einem Menschen erledigte Aufgabe, deren Ausführung eine Stunde dauern kann, in einen einzigen Befehl umzuwandeln, der innerhalb von Minuten ausgeführt wird. Dies verbessert Ihre Leistung und ermöglicht es Ihnen, mit der Arbeit am nächsten großen Projekt zu beginnen.
Ansible ist ein in Python geschriebenes agentenloses Automatisierungstool. Es stellt über SSH eine Verbindung zu Ihren Kunden her und ermöglicht Ihnen die Automatisierung langweiliger, sich wiederholender Aufgaben, die Sie nicht erledigen möchten. Es ermöglicht Ihnen, eine von einem Menschen erledigte Aufgabe, deren Ausführung eine Stunde dauern kann, in einen einzigen Befehl umzuwandeln, der innerhalb von Minuten ausgeführt wird. Dies verbessert Ihre Leistung und ermöglicht es Ihnen, mit der Arbeit am nächsten großen Projekt zu beginnen.
Ansible-Vorteile
Ansible bietet viele Vorteile. Nehmen wir uns etwas Zeit, um einen Blick auf einige der wichtigsten zu werfen. Ich werde dies in Abschnitte unterteilen, einen für diejenigen, die keine oder nur minimale Automatisierung haben, und einen anderen für diejenigen, die bereits ein Automatisierungstool wie Salt oder Puppet verwenden.
Neu in der Automatisierung
Wenn Sie neu in der Automatisierung sind, kann die Verwendung eines einfachen Tools die Lernkurve erleichtern. Schauen wir uns einige Gründe an, warum Sie Ansible den anderen verfügbaren Tools vorziehen sollten.
1. Einfache Syntax
Aufgrund der einfachen Art und Weise, wie Ansible Aufgaben definiert, ist der Einstieg sehr einfach. Nehmen Sie zum Beispiel den folgenden Ausschnitt:
-
– Gastgeber: alle
Aufgaben:
– Name: Nginx installieren
Lecker:
Name: Nginx
Zustand: spätestens
Eine vollständige Ansible-Aufgabe, die dem Ausführen von „yum install nginx“ auf allen Ihren Hosts entspricht.
Sie können wahrscheinlich schon erkennen, was es tut. Es wird die neueste Version von installiert Nginx Open-Source-Webserver auf allen Ihren definierten Hosts. Wir werden uns später mit der Definition von Hosts befassen. Da alle von Ihnen erstellten Aufgaben in YAML vorliegen, sind sie sowohl leicht zu lesen als auch einfach zu erstellen. Dies ist von entscheidender Bedeutung, wenn Sie mit dem Erlernen eines neuen Werkzeugs beginnen, da Sie so schnell Erfahrungen sammeln und gleichzeitig Selbstvertrauen und Verständnis aufbauen können.
2. Git Love
Da es sich bei Ihren Automatisierungen um einfache Textdateien handelt, ist es möglich, sie in Git (oder einem anderen Quell-Repository-System) zu speichern, wo sie der Änderungskontrolle unterliegen und von einer zentralen Quelle aus ausgecheckt und aktualisiert werden können.
3. Einfache Ausführungsreihenfolge
Da Aufgaben in der von Ihnen festgelegten Reihenfolge ausgeführt werden, müssen Sie sich keine Gedanken über die Ausführungsreihenfolge machen. Definieren Sie die Schritte einfach so, wie Sie es bei einem Menschen tun würden, und Ansible führt sie jedes Mal in genau dieser Reihenfolge aus, ohne dass Sie sich Sorgen machen müssen, einen Schritt zu verpassen.
4. Agentenlos
Eine agentenlose Möglichkeit zur Verwaltung Ihrer Hosts zu haben, ist umso wichtiger, wenn Sie nicht bereits über eine Möglichkeit zur automatisierten Bereitstellung eines Agenten verfügen. Der Versuch, einen Automatisierungsschub in einer bestehenden Umgebung zu starten, kann ein Albtraum sein, insbesondere wenn Dutzende oder Hunderte von Maschinen den neuen Agenten benötigen.
Automatisierungsliebhaber
Wenn Sie bereits etwas automatisiert haben, vielleicht mit Bash, Python oder Powershell, fragen Sie sich vielleicht, was Ansible mit sich bringt. Lass uns einen Blick darauf werfen.
1. Einfache Orchestrierung
Haben Sie schon einmal versucht, eine Website mithilfe eines Bash-Skripts zu aktualisieren? Angenommen, Sie verfügen über einen Web-Load-Balancer oder Reverse-Proxy, 5 Webserver, einen Datenbank-Load-Balancer und 2 Datenbankserver. Sie könnten Hunderte von Zeilen damit verbringen, einfach zu überprüfen, ob jede Komponente erfolgreich aktualisiert wurde.
Mit Ansible können Sie Integritätsprüfungen und fortlaufende Upgrades definieren und Ihre Load Balancer so einstellen, dass sie bei jedem Schritt des Upgrades Knoten entfernen, hinzufügen und entfernen. Ein Beispiel hierfür finden Sie in der offiziellen Dokumentation zu Continuous Delivery und Rolling Upgrades.
2. Idempotenz
Idempotenz ist die Eigenschaft bestimmter Operationen in der Mathematik und Informatik, die mehrere Male angewendet werden können, ohne dass sich das Ergebnis über die anfängliche Anwendung hinaus ändert. – Wikipedia Im Grunde besteht das Ziel darin, Ihr Playbook einmal auszuführen, um die Dinge wie gewünscht einzustellen, und es dann weiter auszuführen alle *X* Stunden/Tage/Wochen, um sicherzustellen, dass sich nichts geändert hat. Wenn sich etwas ändert, sollten Sie nach der Quelle der *Konfigurationsdrift* in Ihrer Umgebung suchen.
Bei der Konfigurationsdrift werden die Server in der Infrastruktur mit der Zeit immer unterschiedlicher. – Shadow Soft
3. Eingebauter Geheimspeicher
Mit dem integrierten Geheimspeicher von Ansible, Ansible Vault genannt, können Sie vertrauliche Daten wie Passwörter, API-Schlüssel oder sogar private Schlüssel auf sichere Weise zusammen mit dem Rest Ihrer Codebasis in der Quellcodeverwaltung speichern. Dies ist in Bash oder Python unbekannt und erfordert normalerweise Tools von Drittanbietern wie einen API-fähigen Passwort-Tresor.
4. Erweiterbarkeit
Ansible kann problemlos sowohl für Windows- als auch für Linux-Module sowie für die Kommunikation mit Tools von Drittanbietern erweitert werden. Das heißt, wenn Sie etwas automatisieren möchten, ist die Wahrscheinlichkeit groß, dass es bereits ein Community-Modul gibt, das Sie verwenden können, oder Sie können ein vorhandenes Modul erstellen oder anpassen, um es an Ihre Bedürfnisse anzupassen.
Informationen zur Entwicklung eigener Module finden Sie in der offiziellen Dokumentation, oder Sie schauen sich Ansible Galaxy für Community-Module an.
Erste Schritte mit Ansible
Ansible-Installation
Der Einstieg ist so einfach wie die Installation von Ansible auf Ihrer Workstation oder Ihrem Server. Ich werde die RedHat/CentOS-Befehle zeigen, aber Sie können andere Installationsschritte in der offiziellen Dokumentation sehen.
`sudo yum install ansible`
Das ist es! Sie haben einen voll funktionsfähigen Ansible-Kontrollknoten installiert und können loslegen.
Lagerbestand
Ansible muss wissen, mit welchen Maschinen es kommunizieren und Ihre Playbooks ausführen soll. Schauen wir uns also die Einrichtung einer Grundinventur an. Die Standardinventardatei ist unter Linux unter „/etc/ansible/hosts“ verfügbar. Wenn Sie sich diese Datei ansehen, werden Sie feststellen, dass sie ein INI-ähnliches Format hat und wahrscheinlich etwa so aussieht:
mail.beispiel.com
[Webserver]
foo.example.com
bar.example.com
[Datenbankserver]
one.example.com
two.example.com
three.example.com
Wie in der Dokumentation erläutert, handelt es sich bei den Überschriften in Klammern um Gruppennamen, mit denen Sie Systeme in beliebige Gruppen einteilen können. Ich würde Ihnen empfehlen, sich etwas Zeit zu nehmen und Ihre Inventardatei einzurichten, da es für Ansible wichtig ist zu wissen, auf welchen Hosts Sie Aufgaben ausführen möchten.
Erstellen eines Playbooks
Ein Playbook ist eine Sammlung von Aufgaben, die auf Ihren Hosts ausgeführt werden sollen. Sie können ein Playbook erstellen, das so einfach ist wie eine einzelne Datei mit einem Play oder viele Dateien mit mehreren Bedingungen und Importen aus anderen Playbooks. Wir beginnen mit einem einfachen Playbook, das Firewall-Regeln für Nginx auf unseren Webservern installiert, startet und hinzufügt. In unserer Hosts-Datei könnten wir so etwas haben:
[Webserver]
web01.beispiel.com
web02.beispiel.com
und in unserer Datei „nginx-install.yaml“ haben wir Folgendes:
-
– Hosts: Webserver
Aufgaben:
– Name: Nginx installieren
Lecker:
Name: Nginx
Zustand: spätestens
– Name: Nginx starten
Service:
Name: Nginx
Zustand: gestartet
– Name: Port 80 durch Firewall zulassen
Firewalld:
port: 80/tcp # Alternativ können Sie die Syntax „service: http“ verwenden
dauerhaft: ja
Zustand: aktiviert
Übersicht über den Ansible-Host, der eine Verbindung zu Ihren Webservern herstellt und NGINX installiert. Um dieses Playbook auszuführen, führen Sie einfach „ansible-playbook nginx-install.yaml“ aus und Ansible installiert Nginx auf allen Hosts in Ihrer Webservergruppe. Dies ist ein einfaches Playbook mit einem einzigen Play, es ist jedoch ein gutes Beispiel dafür, wie einfach Ansible in Ihrer Umgebung verwendet werden kann.
Fazit
Wie Sie sehen, ist Ansible ein sehr flexibles und benutzerfreundliches Automatisierungstool, das in jeder Umgebung eingesetzt werden kann. Mit seiner einfachen Lernkurve und der Fähigkeit, sich Ihren Anforderungen anzupassen, ist Ansible eines der besten Automatisierungstools für die Infrastrukturbereitstellung in einer vollständig von DevOps verwalteten Umgebung.
-Justin Gauthier