Installieren und Konfigurieren von Ansible unter CentOS 7

Einführung

Konfigurationsmanagementsysteme sollen Administratoren und Betriebsteams die Steuerung einer großen Anzahl von Servern erleichtern. Mit ihnen können Sie viele verschiedene Systeme von einem zentralen Ort aus automatisiert steuern. Während für Linux-Systeme wie Chef und Puppet viele gängige Konfigurationsverwaltungssysteme verfügbar sind, sind diese häufig komplexer, als viele Menschen es wünschen oder benötigen. * Ansible * ist eine großartige Alternative zu diesen Optionen, da der Aufwand für den Einstieg viel geringer ist.

Ansible konfiguriert Client-Computer von einem Computer aus, auf dem Ansible-Komponenten installiert und konfiguriert sind. Es kommuniziert über normale SSH-Kanäle, um Informationen von entfernten Rechnern abzurufen, Befehle auszugeben und Dateien zu kopieren. Aus diesem Grund muss auf einem Ansible-System keine zusätzliche Software auf den Clientcomputern installiert werden. Dies ist eine Möglichkeit, mit der Ansible die Verwaltung von Servern vereinfacht. Jeder Server, für den ein SSH-Port verfügbar ist, kann unabhängig von der Phase seines Lebenszyklus unter den Konfigurationsschirm von Ansible gestellt werden.

Ansible verfolgt einen modularen Ansatz, der es einfach macht, die Funktionen des Hauptsystems zu erweitern, um mit bestimmten Szenarien fertig zu werden. Module können in jeder Sprache geschrieben werden und kommunizieren in Standard-JSON. Konfigurationsdateien werden hauptsächlich im YAML-Datenserialisierungsformat geschrieben, da sie aussagekräftig sind und den gängigen Auszeichnungssprachen ähneln. Ansible kann mit Clients entweder über Befehlszeilentools oder über die Konfigurationsskripte namens Playbooks interagieren.

In diesem Handbuch installieren Sie Ansible auf einem CentOS 7-Server und lernen einige Grundlagen zur Verwendung der Software.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein CentOS 7 Server. Befolgen Sie die Schritte unter Initial Server Setup with CentOS 7, um einen Benutzer ohne Rootberechtigung zu erstellen, und stellen Sie sicher, dass dies möglich ist Verbindung zum Server ohne Passwort.

Schritt 1 - Ansible installieren

Um mit der Untersuchung von Ansible zur Verwaltung unserer verschiedenen Server zu beginnen, müssen Sie die Ansible-Software auf mindestens einem Computer installieren.

Um Ansible für CentOS 7 zu erhalten, stellen Sie zunächst sicher, dass das CentOS 7 EPEL-Repository installiert ist:

sudo yum install epel-release

Sobald das Repository installiert ist, installieren Sie Ansible mit + yum +:

sudo yum install ansible

Wir haben jetzt die gesamte Software, die zur Verwaltung unserer Server über Ansible erforderlich ist.

Schritt 2 - Konfigurieren von Ansible Hosts

Ansible verfolgt alle Server, die es kennt, über eine "Hosts" -Datei. Wir müssen diese Datei zuerst einrichten, bevor wir mit unseren anderen Computern kommunizieren können.

Öffnen Sie die Datei mit folgenden Root-Rechten:

sudo vi /etc/ansible/hosts

Sie sehen eine Datei, in der viele Beispielkonfigurationen auskommentiert sind. Behalten Sie diese Beispiele in der Datei bei, um die Konfiguration von Ansible kennenzulernen, wenn Sie in Zukunft komplexere Szenarien implementieren möchten.

Die hosts-Datei ist ziemlich flexibel und kann auf verschiedene Arten konfiguriert werden. Die Syntax, die wir verwenden werden, sieht ungefähr so ​​aus:

Beispiel für eine Hosts-Datei

[]
alias ansible_ssh_host=

Das + group_name + ist ein organisatorisches Tag, mit dem Sie mit einem Wort auf alle darunter aufgelisteten Server verweisen können. Der Alias ​​ist nur ein Name, der auf diesen Server verweist.

Stellen Sie sich vor, Sie haben drei Server, die Sie mit Ansible steuern möchten. Ansible kommuniziert mit Client-Computern über SSH. Daher sollte jeder Server, den Sie verwalten möchten, über den Ansible-Server erreichbar sein, indem Sie Folgendes eingeben:

ssh root@

Sie sollten nicht zur Eingabe eines Kennworts aufgefordert werden. Während Ansible mit Sicherheit die Möglichkeit hat, passwortbasierte SSH-Authentifizierung durchzuführen, tragen SSH-Schlüssel dazu bei, die Dinge einfach zu halten. Sie können dem Tutorial How To Use SSH Keys with DigitalOcean Droplets folgen, um SSH-Schlüssel einzurichten Jeder Host, wenn Sie es noch nicht getan haben.

Wir gehen davon aus, dass die IP-Adressen unserer Server "+ 192.0.2.1 ", " 192.0.2.2 " und " 192.0.2.3 " lauten. Stellen Sie dies so ein, dass wir diese einzeln als " host1 ", " host2 " und " host3 " oder als Gruppe als " server +" bezeichnen können. Um dies zu konfigurieren, fügen Sie diesen Block Ihrer hosts-Datei hinzu:

/ etc / ansible / hosts

[servers]
host1 ansible_ssh_host=
host2 ansible_ssh_host=
host3 ansible_ssh_host=

Hosts können mehreren Gruppen angehören und Gruppen können Parameter für alle ihre Mitglieder konfigurieren. Probieren wir das jetzt aus.

Ansible versucht standardmäßig, mit Ihrem aktuellen Benutzernamen eine Verbindung zu Remote-Hosts herzustellen. Wenn dieser Benutzer auf dem fernen System nicht vorhanden ist, führt ein Verbindungsversuch zu folgendem Fehler:

Ansible connection errorhost1 | UNREACHABLE! => {
   "changed": false,
   "msg": "Failed to connect to the host via ssh.",
   "unreachable": true
}

Sagen wir speziell Ansible, dass es sich mit dem * sammy * -Benutzer mit Servern in der Gruppe "Server" verbinden soll. Erstellen Sie ein Verzeichnis in der Ansible-Konfigurationsstruktur mit dem Namen "+ group_vars +".

sudo mkdir /etc/ansible/group_vars

In diesem Ordner können wir YAML-formatierte Dateien für jede Gruppe erstellen, die wir konfigurieren möchten:

sudo nano /etc/ansible/group_vars/servers

Fügen Sie diesen Code zur Datei hinzu:

/ etc / ansible / group_vars / servers

---
ansible_ssh_user:

YAML-Dateien beginnen mit "-". Vergessen Sie diesen Teil also nicht.

Speichern und schließen Sie diese Datei, wenn Sie fertig sind. Ansible verwendet nun immer den Benutzer * sammy * für die Gruppe + servers +, unabhängig vom aktuellen Benutzer.

Wenn Sie unabhängig von der Gruppenzuordnung Konfigurationsdetails für jeden Server angeben möchten, können Sie diese Details in einer Datei unter + / etc / ansible / group_vars / all + ablegen. Einzelne Hosts können durch Erstellen von Dateien in einem Verzeichnis unter + / etc / ansible / host_vars + konfiguriert werden.

Schritt 3 - Einfache Ansible-Befehle verwenden

Nachdem wir unsere Hosts eingerichtet und genügend Konfigurationsdetails vorliegen haben, um eine erfolgreiche Verbindung zu unseren Hosts herzustellen, können wir unseren allerersten Befehl ausprobieren.

Pingen Sie alle von Ihnen konfigurierten Server an, indem Sie Folgendes eingeben:

ansible -m ping all

Ansible gibt die folgende Ausgabe zurück:

Outputhost1 | SUCCESS => {
   "changed": false,
   "ping": "pong"
}

host3 | SUCCESS => {
   "changed": false,
   "ping": "pong"
}

host2 | SUCCESS => {
   "changed": false,
   "ping": "pong"
}

Dies ist ein grundlegender Test, um sicherzustellen, dass Ansible eine Verbindung zu allen Hosts hat.

Der Teil "+ -m ping +" des Befehls ist eine Anweisung an Ansible, das Modul "ping" zu verwenden. Dies sind im Wesentlichen Befehle, die Sie auf Ihren Remote-Hosts ausführen können. Das Ping-Modul funktioniert in vielerlei Hinsicht wie das normale Ping-Dienstprogramm in Linux, überprüft jedoch stattdessen die Ansible-Konnektivität.

Der Teil "+ all +" bedeutet "all hosts". Sie können genauso einfach eine Gruppe angeben:

ansible -m ping servers

Sie können auch einen einzelnen Host angeben:

ansible -m ping host1

Sie können mehrere Hosts angeben, indem Sie sie durch Doppelpunkte trennen:

ansible -m ping host1:host2

Mit dem '+ shell'-Modul können wir einen Terminalbefehl an den entfernten Host senden und die Ergebnisse abrufen. Um zum Beispiel die Speichernutzung auf unserem Rechner host1 herauszufinden, können wir Folgendes verwenden:

ansible -m shell -a 'free -m' host1

Wie Sie sehen, übergeben Sie Argumente mit dem Schalter "+ -a +" an ein Skript. So könnte die Ausgabe aussehen:

Outputhost1 | SUCCESS | rc=0 >>
            total       used       free     shared    buffers     cached
Mem:          3954        227       3726          0         14         93
-/+ buffers/cache:        119       3834
Swap:            0          0          0

Fazit

Inzwischen sollte Ihr Ansible-Server so konfiguriert sein, dass er mit den Servern kommuniziert, die Sie steuern möchten. Sie können überprüfen, ob Ansible mit jedem Host kommunizieren kann, von dem Sie wissen, wie Sie mit dem Befehl "+ ansible +" einfache Aufgaben remote ausführen können.

Obwohl dies nützlich ist, haben wir in diesem Artikel nicht die leistungsstärkste Funktion von Ansible behandelt: Playbooks. Sie haben eine hervorragende Grundlage für die Arbeit mit Ihren Servern über Ansible konfiguriert. Der nächste Schritt besteht darin, zu lernen, wie Sie Playbooks verwenden, um das schwere Heben für Sie zu erledigen. Weitere Informationen finden Sie unter Configuration Management 101: Writing Ansible Playbooks und https://www.digitalocean.com/ Community / Tutorials / Wie erstelle ich ansible Playbooks, um die Systemkonfiguration auf Ubuntu zu automatisieren? [Wie erstelle ich ansible Playbooks, um die Systemkonfiguration auf Ubuntu zu automatisieren?]