So verwenden Sie Ansible Playbooks, um komplexe Aufgaben auf mehreren Remote -Servern zu automatisieren - Teil 2

So verwenden Sie Ansible Playbooks, um komplexe Aufgaben auf mehreren Remote -Servern zu automatisieren - Teil 2

Im vorherigen Artikel dieser Ansible -Serie haben wir erklärt, dass Ansible ein Werkzeug ohne Agenten ist, mit dem Sie mehrere Maschinen (auch als Knoten bezeichnet - schnell und effizient verwalten können und auch Bereitstellungen für sie ausführen können) von einem einzelnen System aus einem einzigen System auszuführen.

Verwenden Sie Ansible Playbooks, um komplexe Aufgaben unter Linux zu automatisieren - Teil 2

Nach dem Installieren der Software im Controller -Computer, dem Erstellen der Tasten für kennwortloses Anmeldung und dem Kopieren an den Knoten ist es an der Zeit, zu erfahren Ansible.

Ansible -Testumgebung

In diesem und dem nächsten Artikel werden wir die folgende Testumgebung verwenden. Alle Gastgeber sind Centos 7 Kisten:

Controller -Maschine (wo Ansible installiert ist): 192.168.0.19 Node1: 192.168.0.29 Node2: 192.168.0.30 

Bitte beachten Sie außerdem, dass beide Knoten im Webservers -Abschnitt des Lokalen hinzugefügt wurden /etc/ansible/hosts Datei:

Ansible Host -Datei

Trotzdem beginnen wir mit dem vorliegenden Thema.

Einführung von Ansible Playbooks

Wie im vorherigen Handbuch beschrieben, können Sie die verwenden Ansible Dienstprogramm zum Ausführen von Befehlen in Remote -Knoten wie folgt:

# Ansible -a "/bin/hostnamectl -static" Webservers 
Ansible: Befehle auf Remote Linux ausführen

Im obigen Beispiel rannten wir hostnamectl -statisch An Node1 Und Node2. Es dauert nicht lange, bis er erkennt, dass diese Methode zum Ausführen von Aufgaben auf Remote-Computern für kurze Befehle gut funktioniert, aber für komplexere Aufgaben schnell belastend oder chaotisch werden kann, die weitere gut strukturierte Konfigurationsparameter oder Interaktionen mit anderen Diensten erfordern

Zum Beispiel einrichten und konfigurieren WordPress auf mehreren Hosts - die wir im nächsten Artikel dieser Serie behandeln werden). Das ist wo Spielbücher in die Szene kommen.

Einfach gesagt, Spielbücher sind einfache Textdateien in der geschrieben Yaml Formatieren Sie und enthalten eine Liste mit Elementen mit einem oder mehreren Schlüssel-/Wertpaaren (auch als "bekannt als"Hash" oder ein "Wörterbuch”)).

In jedem Spielbuch finden Sie eine oder mehrere Gruppe von Hosts (jede dieser Gruppen wird auch als a genannt spielen) wo die gewünschten Aufgaben ausgeführt werden sollen.

Ein Beispiel der offiziellen Dokumente hilft uns zu veranschaulichen:

1. Gastgeber: Dies ist eine Liste von Maschinen (gemäß PER /etc/ansible/hosts) wobei die folgenden Aufgaben ausgeführt werden.

2. Remote_User: Remote -Konto, mit dem die Aufgaben ausgeführt werden.

3. vars: Variablen, die verwendet werden, um das Verhalten des Remote -Systems (en) zu ändern.

4. Aufgaben werden in der Reihenfolge nacheinander gegen alle Maschinen, die Hosts entsprechen, ausgeführt. Innerhalb eines Stücks werden alle Hosts dieselben Aufgabenanweisungen erhalten.

Wenn Sie für einen bestimmten Host eine andere Reihe von zugehörigen Aufgaben ausführen müssen, erstellen Sie ein weiteres Stück in der aktuellen Spielbuch (Mit anderen Worten, der Zweck eines Stücks besteht darin, eine bestimmte Auswahl von Hosts genau definierten Aufgaben abzubilden).

Starten Sie in diesem Fall ein neues Stück, indem Sie die Hosts -Anweisung unten hinzufügen und von vorne beginnen:

--- - hosts: webservers remote_user: root vars: variable1: value1 variable2: value2 remote_user: root tasks: - name: description for task1 task1: parameter1=value_for_parameter1 parameter2=value_for_parameter2 - name: description for task1 task2: parameter1=value_for_parameter1 parameter2=value_for_parameter2 handlers: - Name: Beschreibung für Handler 1 Service: name = name_of_service state = service_status - hosts: dbservers remote_user: root vars: variable1: value1 variable2: value2… 

5. Handler sind Aktionen, die am Ende des Aufgabenabschnitts in jedem Spiel ausgelöst werden und hauptsächlich zum Neustarten oder Auslösen von Neustarts in den Remote -Systemen verwendet werden.

# Mkdir/etc/ansible/Playbooks 

Und eine Datei mit dem Namen Apache.YML Innerhalb von dort mit dem folgenden Inhalt:

--- - Hosts: Webservers Vars: http_port: 80 max_clients: 200 Remote_User: Root -Aufgaben: - Name: Stellen Sie sicher.HTML -Dateikopie: src =/static_files/index.html dest =/var/www/html/modus = 0644 benachrichtigen: - apache neu starten - Name: Stellen Sie sicher Service: name = httpd Status = neu gestartet 

Zweitens erstellen Sie ein Verzeichnis /static_files:

# mkdir /static_files 

wo Sie den Brauch speichern Index.html Datei:

       

Apache wurde in diesem Host über Ansible gestartet


Von Tecmint zu Ihnen gebracht.com

Trotzdem ist es Zeit, dieses Spielbuch zu verwenden, um die zuvor genannten Aufgaben auszuführen. Sie werden feststellen, dass Ansible jede Aufgabe nach dem Host nacheinander durchläuft und über den Status solcher Aufgaben berichtet wird:

# Ansible-Playbook/etc/Ansible/Playbooks/Apache.YML 
Ansible: Aufgaben unter Linux automatisieren

Lassen Sie uns nun sehen, was passiert, wenn wir einen Browser öffnen und darauf hinweisen 192.168.0.29 Und 192.168.0.30:

Ansible: Automatisierte Aufgaben bestätigen

Lassen Sie uns einen Schritt weiter gehen und Apache manuell anhalten und deaktivieren Node1 Und Node2:

# SystemCTL STOP HTTPD # SYSTEMCTL DEBENTEN HTTPD # SYSTEMCTL IS-ASACTE HTTPD # SYSTEMCTL IS-FEHLE HTTPD 
Halten Sie den Apache -Dienst an und deaktivieren Sie den Dienst

Dann wieder laufen,

# Ansible-Playbook/etc/Ansible/Playbooks/Apache.YML 

Dieses Mal berichtet die Aufgabe, dass der Apache -Webserver auf jedem Host gestartet und aktiviert wurde:

Ansible: Webserver starten

Bitte betrachten Sie das obige Beispiel als einen Blick auf die Kraft der Ansible. Während dies relativ einfache Aufgaben sind, wenn es auf einer kleinen Anzahl von Servern ausgeführt wird, kann es sehr mühsam und zeitaufwändig werden, wenn Sie dasselbe in mehreren (vielleicht Hunderten) Maschinen tun müssen.

Zusammenfassung

In diesem Artikel haben wir beschrieben. Die offizielle Dokumentation und das Github -Repository liefern viele Beispiele und Führer, wie man Ansible verwendet, um fast jede erdenkliche Aufgabe zu erreichen.

Wenn Sie lernen, wie Sie Aufgaben auf Remote -Linux -Hosts mithilfe von Ansible automatisieren, möchten wir Ihre Gedanken hören. Fragen, Kommentare und Vorschläge sind auch immer willkommen. Sie können uns also gerne mit dem folgenden Formular in Verbindung setzen.