GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Haben Sie Automatisierung? Hier ist eine Kurzanleitung, um Sie mit Ansible vertraut zu machen

Ansible ist ein Open-Source-Automatisierungstool, mit dem Systemadministratoren die Infrastrukturkonfiguration, die Anwendungsbereitstellung und das Konfigurationsmanagement automatisieren. Es ist agentenlos, was bedeutet, dass keine Software auf Hosts installiert werden muss – im Gegensatz zu einigen anderen Automatisierungstools – um die erforderlichen Aufgaben auszuführen. Stattdessen wird SSH verwendet, wenn das Zielsystem Linux-basiert ist, WinRM, wenn das Zielsystem Windows-basiert ist, oder eine API, wenn das Zielsystem eine API verfügbar macht.

Es verwendet eine deklarative Programmiersprache, um die gewünschte Zielkonfiguration zu definieren. Es wird jedoch nicht angegeben, wie die Konfiguration durchgeführt werden muss. Um beispielsweise eine neue virtuelle Maschine zu erstellen, müssen Sie die Spezifikationen der virtuellen Zielmaschine definieren und festlegen, wie sie bereitgestellt werden soll. Die Ansible Engine führt dann mit Hilfe des entsprechenden Moduls die erforderliche Aufgabe aus.

Automatisierung in der IT-Welt

Automatisierung in der IT-Welt ist erforderlich, um sich wiederholende manuelle Aktionen zu vermeiden und den Bereitstellungszyklus zu beschleunigen. Ansible soll diese Anforderungen erfüllen. Hier sind einige Beispiele dafür, wie Ansible ein wesentlicher Bestandteil Ihrer IT-Infrastruktur sein kann:

Infrastruktur als Code

  • Das Hochfahren neuer virtueller Maschinen kann auf verschiedene Weise erfolgen. Nach dem Hochfahren einer neuen VM müssen Sie jedoch noch zusätzliche Softwarepakete, Anwendungen usw. installieren, bis das neue System funktionsfähig ist. Mit Ansible können Sie diesen gesamten Prozess automatisieren, von der Erstellung einer neuen virtuellen Maschine bis zur Anwendungskonfiguration.
  • Wenn Sie eine Cloud-Umgebung haben, die kontinuierlich wächst, können Sie mit verschiedenen Cloud-nativen Tools tatsächlich neue Rechenressourcen an Ihre Cloud anhängen. Dennoch müssen Sie zuerst die Hardware vorbereiten, bevor Sie sie anschließen (d. h. RAID-Konfigurationen für lokale Festplatten erstellen, VLANs zu ihrem Profil hinzufügen usw.). Ansible kann das primäre Tool sein, um Ihre Hardware vorzubereiten und sie mithilfe von Cloud-nativen APIs an Ihre Cloud anzuschließen.

Anwendungsautomatisierung

  • Angenommen, Sie haben eine Anwendung, die regelmäßig aktualisiert werden muss. Beispielsweise kann das Hinzufügen neuer Einträge in einer Datenbank auf verschiedene Weise abgeschlossen werden. Wenn Ihre Anwendung auf bestimmte Server verteilt ist, können Sie, anstatt verschiedene Skripte für verschiedene Systeme zu erstellen, ein Ansible-Playbook erstellen, das einen oder mehrere Plays enthält, um diese Aktion von A bis Z zu automatisieren und zu orchestrieren.

[ Vielleicht möchten Sie auch lesen: Introducing the new Ansible Automation Hub ]

Ansible-Module

Ansible-Module übernehmen die Anweisungen zur Ausführung der Aufgaben. Einer der wichtigsten Punkte in Ansible ist seine riesige Community, die regelmäßig neue Module erstellt. Diese Module sind normalerweise in Python codiert. Die Erstinstallation kommt immer mit vorinstallierten Modulen. Sie können jedoch zusätzliche Module aus dem Internet installieren. Sie können weitere Informationen zu jedem Modul (d. h. was dieses Modul macht, wie es verwendet wird, Beispiele usw.) auf zwei Arten erhalten:

Online :Durch Durchsuchen der Ansible-Dokumentation.

Achten Sie bei der Suche darauf, die entsprechende Ansible-Version aus der Dropdown-Liste oben links auf der Seite auszuwählen.

Offline :Verwenden des ansible-doc Befehl über die Befehlszeile.

$ ansible-doc file

Hier suchen Sie nach der Verwendung eines Moduls namens file . Ansibles reichhaltige Auswahl an Modulen ist eigentlich ein zweischneidiges Schwert, wo es seine Vor- und Nachteile hat.

Vorteile:

  1. Sie können für fast jede Aufgabe, die Sie ausführen möchten, ein Modul finden.
  2. Du hast eine riesige Community, die dich bei Bedarf unterstützt.

Nachteile:

  1. Bei so vielen Modulen können Sie schnell verwirrt sein, welche Sie verwenden sollen. Aus diesem Grund müssen Sie, wenn Sie mit der Planung der Verwendung von Ansible zur Automatisierung bestimmter Aufgaben beginnen, eine Strategie entwickeln, um zu bestimmen, welche Module verwendet und getestet werden sollen.
  2. Sie werden viele Community-Module finden, die niemand mehr unterstützt oder die mit neuen Ansible-Versionen veraltet sind. Stellen Sie sicher, dass Sie jedes neue Ansible-Upgrade sorgfältig durchführen. Führen Sie außerdem genügend Tests durch, bevor Sie das Modul in Ihre Produktionsumgebung verschieben, bevor Sie Ihre Automatisierungskette gefährden. Die Auswahl der zu verwendenden Module und die Entwicklung einer Automatisierungsstrategie werden Sie im Laufe der Zeit tun.

Ansible und Python

Ansible ist stark von Python abhängig. Die meisten Module sind mit Python codiert. Außerdem muss auf dem Linux-basierten Zielsystem Python installiert sein, um mit der Automatisierung von Aufgaben mit Ansible zu beginnen. Obwohl Ansible stark von Python abhängig ist, sind tiefergehende Python-Kenntnisse nicht erforderlich. Allerdings muss man wissen, wie man pip verwendet Python-Pakete zu verwalten (installieren, aktualisieren usw.) und virtuelle Python-Umgebungen zu erstellen, wird empfohlen.

Warnungen:

  1. Das Ändern der Python-Versionen oder eines der vorinstallierten Pakete auf dem Ansible Engine-System ist eine riskante Aktion, die Ihre Automatisierungskette unterbrechen kann.
  2. Wenn Sie die von Red Hat unterstützte Ansible Engine verwenden, hilft Ihnen Red Hat bei der Erstellung Ihrer virtuellen Python-Umgebung, wenn Sie möchten, aber der Inhalt der virtuellen Umgebung wird nicht unterstützt.

Ansible Engine vs. Ansible Tower

Ansible soll von verschiedenen DevOps-Teams verwendet werden. Ansible Tower ermöglicht es vielen Teams, Automatisierungsaufgaben von einem zentralen Ort aus auszuführen, der RBAC, Protokollierung ausgeführter Aufgaben, eine GUI zum Ausführen von Aufgaben und weitere Funktionen zulässt. Ein zentralisiertes Automatisierungssystem für eine riesige Automatisierungskette wird Ihre Wartungsaufgaben vereinfachen. Für eine kleine Ansible-Automatisierungskette kann Ansible Engine verwendet werden, ein Linux-basierter Knoten mit installierten Ansible-Binärdateien. In diesem Setup werden Sie RBAC und die GUI verpassen. Ansible Engine bietet jedoch die erforderliche Umgebung zum Ausführen der relevanten Automatisierungsaufgaben.

Welcher Ansible-Ansatz?

Ad-hoc

Ad-hoc ist eine Möglichkeit, eine einzelne Ansible-Aufgabe an das/die Zielsystem(e) zu senden. Sie können dies sehen, indem Sie einen Befehl auf einem Remote-System mit SSH oder Legacy-rsh ausführen. Mit Ad-hoc-Ansible führen Sie eine komplexere Aufgabe statt eines Befehls aus, nur weil Sie ein Ansible-Modul verwenden, das mehr als einen einzelnen Befehl ausführt.

Spielt

Ansible Plays sind Sammlungen verschiedener Dateien im YAML-Format, die auf einem oder mehreren Zielsystemen laufen. Diese Spiele werden in eine Datei namens Playbook geschrieben .

Welchen Typ verwenden?

In meiner Erfahrung mit Ansible habe ich gesehen, dass beide Ansätze verwendet wurden. Ich habe Entwickler gesehen, die Ad-hoc-Befehle in einem einfachen Bash-Skript aufgelistet haben, und andere, die ordentliche Playbooks erstellt haben. Obwohl Bash-Skripte mit Ad-hoc-Ansible einfacher aussehen mögen, war Ansible nicht dafür gedacht, so verwendet zu werden. Ad-hoc-Befehle eignen sich für einige einfache Aufgaben. Für ein vollständiges Automatisierungsszenario benötigen Sie ein Playbook, um die auszuführenden Aktivitäten auf einfache visuelle Weise zu debuggen. Ein wesentlicher Vorteil der Verwendung von Playbooks besteht darin, dass Sie sie in Ansible Tower importieren können, wenn Ihre Automatisierungskette wächst. Wie bereits erwähnt, werden Sie Entwickler finden, die andere Wege bevorzugen, aber als „Automatisierungsketten“-Designer oder -Architekt müssen Sie die Skalierbarkeit Ihrer Kette berücksichtigen und den Punkt bestimmen, an dem Sie sich entscheiden, Ihre Automatisierungsaufgaben in Ansible Tower zu konsolidieren.

YAML

YAML ist keine Auszeichnungssprache , (YAML) ist das Format, in dem Ansible-Playbooks geschrieben werden. Das YAML-Format wird in mehreren Bereichen verwendet (z. B. Wärmevorlagen in OpenStack, Erstellen/Ändern von Objekten in Kubernetes usw.). Das YAML-Format ist einfach zu lesen. Es ist jedoch etwas knifflig, da es empfindlich gegen Einkerbungen ist. Wenn Sie keine Dateien in YAML geschrieben haben und um Zeit mit dem Debuggen Ihres Playbooks zu vermeiden, müssen Sie einen Editor verwenden, der die YAML-Syntax und -Formatierung versteht und Ihre Einrückung automatisch anpassen kann. Ich persönlich nutze auf Linux-Systemen gerne den kostenlosen Vim-Editor. Sie müssen nur die folgende Zeile zu einer Datei hinzufügen, nennen Sie sie .vimrc und speichern Sie es in Ihrem Home-Verzeichnis:

autocmd FileType yaml setlocal ai ts=2 sw=2 et

Dateien

In Ansible gibt es einige Arten von Dateien, von denen Sie regelmäßig hören werden. Hier sind einige:

Playbook

Ein Playbook ist eine im YAML-Format geschriebene Datei, die Aufgaben enthält, die auf dem/den Zielsystem(en) ausgeführt werden sollen. Aufgaben, die auf dieselben Systeme abzielen, werden normalerweise in einem Playbook gruppiert, und ein Playbook kann ein oder mehrere Plays enthalten. Die Ansible-Engine führt die Aufgaben von oben nach unten in der Datei aus.

Inventar

Ansible Inventory ist eine Datei, die Ihr(e) Zielsystem(e) identifiziert. Sie können innerhalb Ihres Inventars Gruppen erstellen, um Ihre Systeme zu organisieren. Sie können beispielsweise eine Gruppe für Webserver und eine andere Gruppe für Datenbanken erstellen. Ansible hat zwei Arten von Inventardateien:

Statische Inventare :Dateien für statische Inventare können entweder im INI- oder im YAML-Format geschrieben werden, und Sie können mehr als eine Inventardatei haben. Sie können angeben, welcher verwendet werden soll, indem Sie -i path eingeben in der Befehlsdatei.

Dynamische Inventare :Ein dynamisches Inventar ist ein Skript, das ausgeführt wird, um die Zielsysteme jedes Mal abzurufen, wenn Sie Ihr Playbook ausführen. Dies ist nützlich, wenn Sie Ihre in der Cloud bereitgestellten Playbook-Targeting-Systeme ausführen und jedes Mal, wenn Sie mehr (oder weniger) Systeme für das Playbook zum Targeting haben.

Ansible Tower hat einige Skripte für die dynamische Inventarisierung vorgefertigt.

Ansible.cfg

Ansible.cfg ist die Ansible-Konfigurationsdatei. Es ist im INI-Format. Normalerweise wird es in /etc/ansible/ansible.cfg gespeichert . Es steuert systemweite Ansible-Einstellungen. Möglicherweise müssen Sie jedoch eine oder mehrere Einstellungen für Ihr spezifisches Projekt ändern (d. h. das Format von stdout auf dem Bildschirm von JSON in YAML ändern). Sie können Ihre eigene ansible.cfg erstellen Datei und legen Sie sie in dem Projektverzeichnis ab, in dem Sie nur die Einstellung ändern, die Sie überschreiben möchten.

Variablendateien

Variablen in Ansible sind ein wichtiges Thema und erfordern Zeit, um sie zu verstehen und zu üben. Sie können Variablen an mehr als 20 Stellen definieren. Sie müssen den Vorrang von Variablen verstehen, um den richtigen Speicherort zu ermitteln.

Rollen

Die Hauptziele der Automatisierung bestehen darin, manuelle Aufgaben zu minimieren und Bereitstellungsaktivitäten zu beschleunigen. Wenn Sie eine oder mehrere Aufgaben haben, die Sie häufig während verschiedener Spiele erledigen, und diese an einem gemeinsamen Ort aufbewahren und bei Bedarf darauf verweisen möchten, hilft Ihnen Ansible Roles. Ansible Roles hat eine Dateistruktur, der Sie folgen müssen. Diese klar definierte Struktur macht es praktisch, von der Community entwickelte Rollen herunterzuladen, um sie in Ihren Playbooks zu verwenden.

Ansible-Galaxie

Ansible Galaxy ist eine Community-Plattform, auf der Sie zusätzliche Tools für Ansible, zusätzliche Module, Rollen und Playbooks herunterladen können. Wenn Sie neu bei Ansible sind, denken Sie daran, dass Ansible eine riesige Community hat. Für fast jeden Fall, den Sie mit Ansible lösen möchten, hat sich wahrscheinlich schon jemand anderes in der Community Gedanken gemacht und ihn auf Ansible Galaxy hochgeladen. Um das Rad nicht neu erfinden zu müssen, lohnt es sich, einige Zeit mit Ansible Galaxy zu verbringen, um nach etwas zu suchen, das die gewünschten Aufgaben erfüllt, es herunterzuladen, dann unverändert zu verwenden oder für Ihre eigene Umgebung oder Anwendung zu modifizieren.

Automatisierungszentrum

Wie bereits erwähnt, verfügt Ansible über eine große Anzahl von Modulen, die von seiner Community entwickelt wurden. Das klingt in der Tat sehr nützlich, aber für Unternehmen, die sehr empfindlich auf die Markteinführungszeit achten oder ein kleines Automatisierungsteam haben, dem es an Python-Programmierkenntnissen mangelt, ist es weniger wünschenswert, sich ausschließlich auf Community-Module zu verlassen. Einige werden in zukünftigen Ansible-Versionen möglicherweise nicht mehr unterstützt, während andere möglicherweise sogar von ihren Entwicklern aufgegeben werden.

Niemand muss Probleme beheben, die bei der Verwendung von Community-Modulen gefunden werden. Red Hat hat Ansible daher von einem reinen von der Community unterstützten Automatisierungstool auf Unternehmensebene angehoben und den sogenannten Automation Hub bereitgestellt. Automation Hub kann als kostenpflichtige, unterstützte Version von Ansible Galaxy angesehen werden. Das Schöne an diesem Service ist, dass Sie die Module auswählen können, die Sie benötigen, die zu Ihrer Ansible-Version passen, und Unterstützung erhalten, wenn ein Modul nicht wie erwartet funktioniert.

Einige Ratschläge

Ansible verfügt wie jede IT-Technologie über Best Practices. Sie können im Laufe der Zeit Ihre eigenen entwickeln, aber ich möchte meine hier teilen:

  1. Beginnen Sie mit der Verwendung von Ansible. Du kannst es nur beherrschen, wenn du es benutzt.
  2. Wenn Sie der Designer oder Architekt der Automatisierungskette sind, sollten Sie, obwohl Sie in kleinen Schritten beginnen, immer die Zukunft im Auge behalten und vom ersten Tag an tun, um bereit zu sein, wenn Ihre Automatisierungskette größer wird.
  3. Wenn Sie Playbooks schreiben, um Aufgaben zu automatisieren, denken Sie immer einfach und suchen Sie nach Ansible Galaxy. Wenn Sie feststellen, dass Ihre Arbeit zu komplex ist, bewegen Sie sich in die falsche Richtung, da Sie sie in Zukunft nicht mehr aufrechterhalten können.
  4. Automatisierung ist keine Ein-Personen-Show in dem Sinne, dass andere Personen mit Ihnen zusammenarbeiten, also schreiben Sie Ihre Playbooks auf klare, beschreibende Weise und verwenden Sie SCM-Systeme zur Versionskontrolle.

Lernressourcen

Ansible verfügt über eine Vielzahl von Lernressourcen. Hier sind einige:

Bücher :Ansible hat viele Bücher auf dem Markt, aber Ansible:Up and Running ist meiner Meinung nach die vollständigste Referenz.

IRC :Auf Freenode-Servern hat Ansible einen Kanal, wo die Community Ihnen bei Bedarf helfen kann.

Online-Dokumentation :Die Ansible-Dokumentation ist online, wo Sie sie besuchen und daraus lernen können.

Online- und Videoressourcen :Hier sind einige Online- und Videoressourcen zum Erlernen von Ansible.

  • Ansible-Videoanleitung
  • Ansibles YouTube-Kanal
  • Red Hat Ansible-Kurse

[ Brauchen Sie mehr zu Ansible? Nehmen Sie an einem kostenlosen technischen Überblickskurs von Red Hat teil. Ansible Essentials:Einfachheit in der Automatisierung Technischer Überblick. ] 

Abschluss

Ansible ist ein hochmodernes Tool für die IT-Automatisierung. Es ist einfach zu erlernen, zugänglich und reich an Modulen. Wenn Sie mehr als nur das Erlernen von Ansible planen, z. B. den Aufbau Ihrer Automatisierungskette oder die Migration zu Ansible, stehen Ihnen zahlreiche Ressourcen zur Verfügung, um Sie zum Laufen zu bringen.


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. Ansible Guide:Verwalten Sie Dateien mit Ansible

  3. Linux-Startvorgang:Ein Leitfaden für den Einstieg

  4. Entmystifizierung von Ansible für Linux-Systemadministratoren

  5. Verbindungsgeschwindigkeit programmgesteuert abrufen?

Einführung in die Ansible-Automatisierungsplattform

Wir stellen den neuen Ansible Automation Hub vor

Kurzanleitung zu Ansible für Linux-Systemadministratoren

Umfassender hPanel-Leitfaden

Installieren Sie Ansible auf Ubuntu – Einfache Schritt-für-Schritt-Anleitung

5 Methoden, um schnelle Hilfe zu Linux-Befehlen zu erhalten