Ansible Tutorial für Anfänger unter Linux

Ansible Tutorial für Anfänger unter Linux

Ein Systemadministrator muss in den meisten Fällen um mehr als einen Server kümmern, daher muss er häufig wiederholte Aufgaben für alle ausführen. In diesen Fällen ist Automatisierung ein Muss. Ansible ist eine Open -Source -Software von Red Hat; Es ist in der Python -Programmierlanaguage geschrieben, und es handelt sich um eine Bereitstellung und Konfigurationsmanagement -Software, die uns in den oben genannten Fällen hilft. In diesem Tutorial werden wir sehen, wie man es installiert und die grundlegenden Konzepte hinter seiner Nutzung.

In diesem Tutorial lernen Sie:

  • So installieren Sie Ansible auf den am häufigsten verwendeten Linux -Verteilungen
  • So konfigurieren Sie Ansible
  • Was ist der Ansible -Inventar?
  • Was sind die Ansible -Module?
  • So führen Sie ein Modul aus der Befehlszeile aus
  • So erstellen und führen Sie ein Playbook aus und führen Sie es aus

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilung unabhängig
Software Ansible, Python
Andere Keiner
Konventionen # - Erfordert, dass gegebene Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden können sudo Befehl
US

Ansible installieren

Das Ansible -Paket ist in den offiziellen Repositories der am häufigsten verwendeten Linux -Verteilungen enthalten, sodass es einfach mit ihren nativen Paketmanagern installiert werden kann. Um es auf Debian zu installieren, können wir ausführen:

$ sudo apt-Get Update && apt-Get Install Ansible 

Stattdessen: Ansible auf Fedora installieren:

$ sudo DNF installieren Ansible 

Ansible befindet sich im Repository „Community“ von Erzlinux; Wir können es mit Pacman installieren:

$ sudo pacman -sy Ansible 

Wenn wir Ansible auf CentOS8 installieren möchten, müssen wir die hinzufügen Epel-Release Softwarequelle für unser System, da das Paket in den Standard -Repositories nicht verfügbar ist. Um dies zu tun, führen wir den folgenden Befehl aus:

$ sudo dnf install https: // dl.Fedoraproject.org/pub/epel/epel-release-latest-8.Keinarch.Drehzahl 

Danach können wir einfach rennen:

$ sudo DNF installieren Ansible 

Für andere verteilungsspezifische Installationsanweisungen können wir die dedizierte Seite konsultieren
der offiziellen Dokumentation der Ansible.



Einführung von Ansible

Die grundlegende Besonderheit von Ansible ist, dass es ein ist agentenlos Bereitstellungssystem. Dies bedeutet, dass wir keinen Agenten- oder Software -Daemon auf den Servern installieren müssen, die wir kontrollieren möchten. Alles, was wir brauchen, ist, Ansible auf dem sogenannten zu installieren und zu konfigurieren Steuermaschine. Der Aufgaben Wir konfigurieren werden in den allermeisten Fällen über ein einfaches durchgeführt ssh Verbindung.

Die Ansible -Konfigurationsdatei

Ansible kann konfiguriert werden, indem Parameter und deren Werte in einer oder mehreren Konfigurationsdateien angegeben werden. Die Anwendung in der Reihenfolge der Priorität sucht nach den folgenden Dateien:

  1. Die über die Variablen ansible_config angegebene Datei
  2. Der Ansible.CFG Datei im aktuellen Arbeitsverzeichnis
  3. Der .Ansible.CFG Datei im User Home -Verzeichnis
  4. Der /etc/ansible/ansible.CFG Datei

Der /etc/ansible/ansible.CFG ist der letzte, also wird es als Fallback und der Standard verwendet. Aus offensichtlichen Gründen ist dies nicht der geeignete Ort, um alle möglichen Parameter zu beschreiben, die in einer Konfigurationsdatei angegeben werden können. Hier ist jedoch ein Auszug des Dateiinhalts:

[Standards] #Einige grundlegende Standardwerte… #Inventory =/etc/ansible/hosts #library =/usr/share/my_modules/#module_utils =/usr/share/my_module_utils/#remote_tmp = ~/~/.ansible/tmp #local_tmp = ~//.Ansible/TMP #Plugin_Filters_cfg =/etc/ansible/plugin_filters.yml #fondks = 5 #poll_interval = 15 #sudo_user = root #ask_sudo_pass = true #ask_pass = true #transport = smart #remote_port = 22 #module_lang = c #module_set_locale = false 

Diejenigen im Beispiel sind kommentierte Parameter, die mit ihren Standardwerten definiert sind. Unter ihnen können Sie das sehen Inventar Parameter, die die haben /etc/ansible/hosts Wert. Wir werden sehen, was dies im nächsten Abschnitt ist.

Die Datei "Hosts" oder "Inventory"

In der Datei "Hosts" -Hosts "Hosts" werden wir im Grunde genommen die IP -Adresse oder die Hostnamen der Maschinen festgelegt, die wir mit Ansible steuern möchten (dies ist das „Inventar“ im Ansible -Jargon). Bei einer Standardinstallation befindet sich die Datei in der /etc/ansible Verzeichnis. In der Bestandsdatei können Hosts sein gruppiert oder gruppiert. Wir können beispielsweise einen Host für sich selbst angeben:

Server 1 

Wenn wir jedoch Operationen auf mehr als einem Host ausführen möchten, ist es sehr nützlich, Hosts in Gruppen zu setzen, die beispielsweise ihre „Rolle“ als Kriterien verwenden, die erstellt haben. Angenommen, die Hosts, mit denen wir zu tun haben, werden alle als Webserver verwendet, und wir könnten schreiben:

[Webservers] Server1 Server2 

Ansible Module

Ansible Module sind im Grunde kleine Programme, die zur Ausführung der Aufgaben verwendet werden, die wir benötigen. Jede von ihnen ist so konzipiert, dass sie einen einzelnen Grundvorgang ausführen, um die Granularität zu gewährleisten. Sie können aus der Befehlszeile oder im Inneren ausgeführt werden Spielbücher. Die vollständige Liste aller Module finden Sie auf der dedizierten Seite der offiziellen Dokumentation. Auch hier können wir nicht alle Module untersuchen, aber hier sind einige Beispiele.

Die APT-, DNF- und YUM -Module werden verwendet, um Pakete mit den Dateimanagern zu verwalten
aus. Das SBOOLE -Modul wird verwendet, um den Status von Selinux -Booleschen zu verwalten, das Benutzermodul zum Verwalten von Benutzerkonten usw.



Verwenden von Modulen aus der Befehlszeile

Wie wir im vorherigen Abschnitt sagten, können Module aus der Befehlszeile oder aus Playbooks verwendet werden. Wir werden uns im nächsten Abschnitt auf Letzteres konzentrieren; Hier werden wir demonstrieren, wie ein Modul aus der Befehlszeile mit dem verwendet werden Ansible Befehl. In diesem Beispiel werden wir die verwenden Klingeln Modul. Dieses Modul hat nichts mit dem Ping -Befehl zu tun, es wird jedoch verwendet, um zu überprüfen. Das Modul gibt den Erfolg des „Pongs“ für den Erfolg zurück:

$ ansible webserver -m ping -mask -pass 

Wir haben den Ansible -Befehl angerufen, in dem wir angeben, dass wir die Aufgabe auf den Hosts -Mitgliedern der Gruppe „Webservers“ und mit dem ausführen möchten -M Option haben wir den Namen des Moduls übergeben, das wir verwenden möchten. Wir haben auch die benutzt --Ask-Pass Option, warum? Obwohl ich zuvor den Fingerabdruck der Remote -Server in die SSH -Datei „Bekannte Hosts“ hinzugefügt habe, habe ich SSH -Zugriff nicht über den öffentlichen Schlüssel konfiguriert. Daher sollte ein SSH -Kennwort bereitgestellt werden, wenn wir eine Aufgabe ausführen. Der --Ask-Pass Die Option macht, damit das Passwort interaktiv gefragt wird. Hier ist die Ausgabe des Befehls
über:

SSH -Passwort: Server2 | Success => "Ansible_facts": "entdeckt_Interpreter_python": "/usr/bin/python", "geändert": false, "ping": "pong" server1 | Success => "Ansible_facts": "entdeckt_Interpreter_python": "/usr/bin/python", "geändert": false, "ping": "pong" 

Ansible Playbooks

Was ist ein Spielbuch? Ansible Playbooks sind keine anderen als YAML. Lassen Sie uns ein Spielbuchbeispiel sehen. In der folgenden Datei stellen wir eine Aufgabe ein, um sicherzustellen, dass der VIM -Texteditor installiert ist, und in der neuesten verfügbaren Version:

--- - Name: Aktualisieren Sie Webservers Hosts: Webservers Remote_User: EGDOC werden: Ja -Aufgaben: - Name: Stellen Sie sicher, dass Vim installiert ist und in der neuesten Version DNF: Name: Vim State: Neueste… 

Lassen Sie uns das oben genannte analysieren. Der --- Und Wir können sehen, dass am Anfang und am Ende der Datei Teil der Standard -YAML -Syntax sind: Sie sind Optional und markieren Sie den Anfang und das Ende der Datei. Die Anweisungen und ihre Werte werden in einem Wörterbuchformat dargestellt Schlüsselwert Paare.

Ein Spielbuch kann mehrere sogenannte enthalten Theaterstücke; In diesem Fall haben wir gerade einen definiert. In der Tat war das Erste, was wir taten, seine festlegen Name, In diesem Beispiel handelt es sich um "Webserver aktualisieren". Der zweite Schlüssel, den wir verwendet haben, ist Gastgeber: damit können wir die Hostgruppe definieren, worauf die Aufgaben ausgeführt werden sollten. In diesem Fall haben wir angegeben Webserver als Wert, der die Maschinen umfasst, die wir in den vorherigen Beispielen definiert haben (Server1 und Server2).

Der nächste Schlüssel, den wir verwendeten, war Remote_User. Damit können wir angeben, was der Benutzer ist. Danach benutzten wir die werden Taste. Dieser Schlüssel akzeptiert einen booleschen Wert und damit geben wir an, ob
Privilegienkalation sollte verwendet werden, um die Aufgaben auszuführen oder nicht. In diesem Fall setzen wir es mit dem „EGDOC“ -Drementen und benötigen Root -Berechtigungen, um ein Paket zu installieren, da wir uns in den Remote -Maschinen anmelden Ja. Es ist wichtig zu bemerken
Diese Privilegienkalation sind in der Konfiguration der Konfiguration /etc/ansible/ansible.CFG Konfigurationsdatei im dedizierten Abschnitt. In diesem Fall sind die Standardwerte die folgenden:

[privilege_escalation] #werden = true #werden_method = sudo #werden_user = root #werden_ask_pass = false 


Nach Definition der spielen Informationen haben wir begonnen, unsere Aufgabenliste anzugeben. Um dies zu tun, haben wir das benutzt Aufgaben Stichwort. Jede Aufgabe hat eine Name die zur Dokumentation und in Aufgabenhandlern verwendet wird.

Mit DNF: Wir haben angegeben, dass wir das „DNF“ -Modul verwenden möchten, das, wie wir zuvor gesehen haben, zum Verwalten von Paketen verwendet werden. In diesem Abschnitt mit dem Name Stichwort
Wir haben den Namen des Pakets angegeben. In diesem Beispiel interessieren wir uns nur für ein einzelnes Paket, aber mehrere Pakete können mit einer Liste angegeben werden. Zum Beispiel:

DNF: Name: [Vim, Nano] 

Mit dem Zustand Schlüsselwort der DNF Modul Wir geben im Grunde an, was wir mit den angegebenen Paketen (en) machen möchten. In diesem Fall haben wir verwendet neueste Als Wert: Mit ihm stellen wir sicher, dass das Paket installiert ist und zur neuesten verfügbaren Version auf der Verteilung auf dem Remote -Computer verwendet wird. Andere mögliche Werte, die wir verwenden können, sind entfernen oder abwesend, Dies führt dazu, dass die Pakete (en) deinstalliert werden oder gegenwärtig die nur sicherstellen, dass das Paket installiert ist. Ich empfehle Ihnen, die offizielle Moduldokumentation auf die vollständige Liste der Schlüssel und Werte zu überprüfen, die mit dem Modul verwendet werden können.

Hier gehen wir, wir haben gerade unser erstes Spielbuch definiert. Wie können wir es ausführen??

Ein Spielbuch ausführen

Um ein Playbook auszuführen, verwenden wir das Dedizierte Ansible-Playbook Befehl. Der Befehl akzeptiert eine Reihe von Optionen und nimmt ein oder mehrere Playbook -Dateien als Argumente an. Um das im vorherige Abschnitt definierte Spielbuch auszuführen, würden wir beispielsweise den folgenden Befehl ausführen:

$ Ansible-Playbook-Kassierpass --- Ask-BECOME-PASS/PATH/TO/PLAYBOOK.YML 

Sie können feststellen, dass wir in diesem Fall den Befehl mit dem aufgerufen haben --Ask-BECOME-PASS Optionen. Diese Option ist erforderlich, da wir in der Playbook -Datei die zugewiesen haben Ja Wert zum werden Schlüssel, da wir eine Berechtigungskalation benötigen, um Pakete auf den Remote -Maschinen zu installieren. Der --Ask-BECOME-PASS Option macht so, dass die sudo Passwort wird gefragt, wenn wir das Spielbuch ausführen. In diesem Fall, da wir auch benutzt haben --Ask-Pass, Das SSH -Passwort wird als Standardkennwort für die Eskalation für Privilegien verwendet. Hier ist die Ausgabe, die wir erhalten, wenn wir das Spielbuch ausführen:

SSH -Passwort: Kennwort werden [Standards für SSH -Passwort]: Spielen Sie die Webservers ab] ****************************** ******************************************************** ******************************************************** ****** Aufgabe [Fakten sammeln]*************** ******************************************************** ******************************************************** ** OK: [Server1] OK: [Server2] Task [Stellen Sie sicher ******************************************************** ***************** ******************************************************** ******************************************************** ************************************************* Server 1 : OK = 2 geändert = 1 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 Ignored = 0 Server2:OK = 2 geändert = 1 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 ignoriert = 0 

Zuerst werden wir gebeten, das SSH -Passwort zu geben, dann das "Werden". Wie wir bereits gesagt haben, wird das SSH -Passwort in diesem Fall als Standardwert verwendet. Wie Sie vor der Aufgabe sehen können, die wir im Spielbuch angegeben haben, ist eine andere Aufgabe: „Fakten sammeln“. Diese Aufgabe wird standardmäßig ausgeführt, um nützliche Variablen über Remote -Hosts zu sammeln, die in Playbooks verwendet werden können.

Nachdem die Aufgaben ausgeführt wurden, erhalten wir eine Zusammenfassung der Spiele, die wir angegeben haben. In diesem Fall können wir sehen, dass zwei Aufgaben korrekt ausgeführt wurden (OK = 2) und eine Aufgabe hat eine Änderung verursacht ((geändert = 1). Dies ist sinnvoll: Die Änderung trat seit der Installation des VIM -Pakets auf.

Wenn wir nun versuchen, das Spielbuch erneut auszuführen, können wir feststellen, dass keine Änderungen auftreten, da VIM bereits installiert ist und bei der letzten verfügbaren Version:

Spielen Sie die Zusammenfassung* ******************************************************** ******************************************************** ***** server1: OK = 2 geändert = 0 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 ignoriert = 0 server2: OK = 2 geändert = 0 nicht erreichbar = 0 fehlgeschlagen = 0 übersprungen = 0 gerettet = 0 ignoriert = 0 

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, was Ansible ist und was seine Besonderheiten sind. Wir haben gesehen, wie man es auf einigen der am häufigsten verwendeten Linux -Verteilungen installiert, wie man es konfiguriert und einige grundlegende Konzepte: Was ist ein Inventar und was sind die
Ansible Module. Wir haben auch gesehen, wie man ein Modul aus der Befehlszeile ausführt und wie man ein Spielbuch schreibt und ausführt. Dies war nur eine Einführung in die Ansible -Welt; Holen Sie sich die Hände schmutzig, experimentieren und lesen Sie die offizielle Dokumentation für ein ausführlicheres Wissen!

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • Dinge zu installieren auf Ubuntu 22.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Ubuntu 20.04 Leitfaden
  • Verschachtelte Schleifen in Bash -Skripten
  • Wie oft müssen Sie Ihren Linux -Server neu starten??
  • Hung Linux System? Wie man zur Befehlszeile entkommt und…