Wie installiere und konfiguriere ich Ansible unter Ubuntu?

Erste Schritte mit Ansible unter Ubuntu: Optimierte Bereitstellung und Konfigurationsmanagement

Konfigurationsmanagement ist ein Kernbestandteil des DevOps-Lebenszyklus. Es ermöglicht die Automatisierung und Steuerung der IT-Infrastruktur.

Es existiert eine Reihe von Werkzeugen für das Konfigurationsmanagement, darunter Puppet, Ansible, Chef und SaltStack. Ansible erfreut sich in der DevOps-Welt besonderer Beliebtheit. Es ist in der Lage, tausende von Servern und die gesamte IT-Infrastruktur mühelos zu verwalten.

In diesem Artikel werden wir die folgenden Themen behandeln:

  • Ansible Installation
  • SSH-Schlüsselaustausch
  • Einrichtung des Ansible-Clients
  • Ansible Tests

Ansible installieren

Um es einfach zu halten, werden wir Ansible auf zwei Servern einrichten. Ein Server fungiert als Ansible-Server, der andere als Ansible-Client. Wir verwenden folgende IP-Adressen:

  • ansible-server – 10.0.0.1
  • ansible-client – 10.0.0.25

Die Installation ist unkompliziert. Die folgenden Schritte müssen auf allen Servern durchgeführt werden, auf denen Ansible genutzt werden soll. In unserem Fall sind dies die beiden oben genannten Server.

  • Führen Sie den folgenden Befehl aus, um die notwendigen Softwarepakete für die Installation von Ansible zu installieren:
sudo apt install software-properties-common
  • Fügen Sie das Repository hinzu, das das Ansible-Paket enthält:
sudo apt-add-repository --yes --update ppa:ansible/ansible
  • Aktualisieren Sie die Paketverwaltung apt:
sudo apt update
  • Starten Sie die Installation mit folgendem Befehl:
sudo apt install ansible

Die Installation des Pakets dauert nur wenige Augenblicke.

Wie können wir überprüfen, ob Ansible erfolgreich installiert wurde und welche Version verwendet wird?

Das ist ganz einfach. Mit dem Befehl ansible --version lassen sich diese Informationen abrufen.

ansible --version
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]

Wie ersichtlich, ist Ansible Version 2.8.1 installiert. Es werden relevante Informationen wie der Speicherort der Konfigurationsdatei und das Python-Modul angezeigt.

Im nächsten Schritt wird ein SSH-Schlüsselaustausch eingerichtet, damit der Server mit dem Client kommunizieren kann.

SSH-Schlüsselaustausch

Ansible stellt die Verbindung zum Client über SSH (Secure Shell) her.

Wir beginnen mit der Erstellung eines öffentlichen Schlüssels auf dem Ansible-Server, der anschließend auf den Ansible-Client kopiert wird.

Bitte stellen Sie sicher, dass Sie als Root-Benutzer angemeldet sind.

  • Generieren Sie den Schlüssel mit dem Befehl ssh-keygen wie folgt:
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    =.+oo .      |
|   . B.B.= .     |
|  . o @oE +      |
|   . *oO * .     |
|    o++.S + .    |
|   .o +o . +     |
|    .o..o +      |
|     ..o o .     |
|       .o o.     |
+----[SHA256]-----+

Wie Sie sehen, wurde im .ssh-Ordner ein öffentlicher Schlüssel erstellt. Der vollständige Pfad lautet /root/.ssh/id_rsa.pub.

Hinweis: Es ist wichtig, dass die privaten und öffentlichen Schlüsseldateien nicht von anderen Benutzern gelesen werden können. Überprüfen Sie dies mit dem Befehl ls -l.

cd /root/.ssh
ls -l 
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa 
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub

Sollten die Berechtigungen nicht korrekt sein, können sie mit dem Befehl chmod angepasst werden.

Beispiel:

chmod 400 id_rsa
chmod 400 id_rsa.pub

Kopieren wir den öffentlichen Schlüssel auf den Ansible-Host mit der IP-Adresse 10.0.0.25:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Die Ausgabe zeigt, dass ein Schlüssel erfolgreich hinzugefügt wurde. Das bedeutet, dass der SSH-Schlüsselaustausch funktioniert.

Als nächstes konfigurieren wir den Ansible-Client.

Ansible-Client einrichten

Es wird davon ausgegangen, dass die Installationsschritte für Ansible auf dem Client-Server bereits durchgeführt wurden, wie zuvor beschrieben.

Die Einrichtung des Clients oder Hosts bedeutet nichts anderes, als dem Ansible-Server die Clients bekannt zu machen. Führen Sie hierzu die folgenden Schritte aus:

  • Melden Sie sich auf dem Ansible-Server an.
  • Wechseln Sie zum Verzeichnis /etc/ansible.
  • Fügen Sie die folgende Zeile mithilfe eines Texteditors Ihrer Wahl in der Datei hosts hinzu:
[Client]
node1 ansible_ssh_host=10.0.0.25

Ansible-Test

Wenn alle vorherigen Schritte korrekt ausgeführt wurden, erhalten Sie die Meldung „SUCCESS“, wenn Sie den folgenden Befehl auf dem Ansible-Server ausführen:

ansible -m ping Client
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}

Der obige Befehl sendet einen Ping an den Client, um die Verbindung zu testen und zu überprüfen, ob sie funktioniert.

Fazit

Ich hoffe, dieser Artikel hat Ihnen einen guten Startpunkt für die Installation und Nutzung von Ansible gegeben. Bleiben Sie dran für weitere Ansible-Tutorials oder schauen Sie sich diesen Udemy-Kurs „Mastering Ansible“ an.