Ansible ist ein Open-Source-Tool, mit dem Sie Anwendungen bereitstellen, konfigurieren, verwalten und bereitstellen können. Es hilft, die Infrastruktur als Code auszuführen, im Grunde ein Automatisierungstool. Ansible läuft auf Linux-, Unix-ähnlichen und Windows-Systemen. Es ist ein kostenloses, in Python geschriebenes Tool.
Mit Ansible wird die Automatisierung und Steuerung einer großen Anzahl von Servern vereinfacht. Dadurch verwaltete der Systemadministrator oder DevOps-Ingenieur alle Server von einem einzigen Kontrollknoten aus.
Im Gegensatz zu Chef und Puppet benötigt Ansible keine spezielle Software, die auf den Knoten installiert werden muss. Ansible verwendet SSH zum Ausführen von Aufgaben und eine YAML-Datei zum Definieren von Bereitstellungsinformationen.
Dieses Tutorial zeigt Ihnen, wie Sie Ansible unter Ubuntu 20.04 installieren und lernen die Grundlagen kennen.
Ansible Control Node und Hosts
Ansible-Steuerknoten sind Computer, auf denen Ansible installiert ist und die einen oder mehrere Remote-Hosts steuern. Kontrollknoten kommunizieren mit Hosts oder Knoten über SSH unter Verwendung von Befehlszeilentools oder Konfigurationsskripten (Playbooks).
Hosts oder verwaltete Knoten sind Netzwerkgeräte oder Server, die von Ansible verwaltet werden. Ansible vereinfacht den Vorgang durch die Verwendung von SSH, sodass auf Hostcomputern nur der SSH-Dienst ausgeführt und der Port geöffnet sein muss.
Im folgenden Abschnitt lernen wir, wie man einen Kontrollknoten einrichtet und Informationen von Hosts abruft.
Anforderungen
- Ein Kontrollknoten mit SSH-Schlüsselpaar
- Ein oder mehrere Hosts – Remote-Server mit hinzugefügtem öffentlichem SSH-Schlüssel
Für die Demonstration verwenden wir für beide Zwecke einen Ubuntu 20.04-Rechner.
Installieren Sie Ansible auf Ubuntu
Ansible-Komponenten werden auf dem Kontrollknoten installiert. Der folgende Befehl zum Installieren von Ansible auf Ubuntu.
Holen Sie sich zuerst eine aktualisierte Liste aller Pakete aus ihren Quellen:
$ sudo apt update
Um nun Ansible zu installieren, geben Sie Folgendes ein:
$ sudo apt install ansible
Steuerknoten und Hosts einrichten
Es wird empfohlen, einen Nicht-Root-Benutzer mit sudo-Berechtigungen auf dem Ansible-Steuerknoten zu erstellen. Richten Sie dann ein SSH-Schlüsselpaar für diesen Benutzer ein.
Erstellen Sie einen neuen Nicht-Root-Benutzer:
$ sudo adduser controller
Dann müssen Sie sudo
zuweisen Berechtigung für controller
Benutzer:
$ sudo usermod -aG sudo controller
Jetzt können Sie sich beim controller
anmelden Benutzersitzung und generieren Sie einen SSH-Schlüssel:
$ su - controller
$ ssh-keygen
Ausgabe:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/controller/.ssh/id_rsa):
Created directory '/home/controller/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/controller/.ssh/id_rsa
Your public key has been saved in /home/controller/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:R033P2ygbVuZv5jJdRbIZtaPG8Af7ZFL2pE9vbzQgP0 controller@linoxide
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| o . . |
| . .. .|
| . .* =.O|
| S .oo@.^=|
| . =o%+@|
| ++E*|
| . *++|
| =.o |
+----[SHA256]-----+
Wir müssen passwortloses SSH von Ansible Control Node zu jedem Host aktivieren. Grundsätzlich müssen wir den öffentlichen Schlüssel des Kontrollknotens in die Datei „authorized_keys“ auf jedem Host kopieren.
In diesem Tutorial verwenden wir zwei ansible Hosts:host1@ip_address_1
und host2@ip_address_2
.
Führen Sie auf dem Ansible-Steuerknoten den folgenden Befehl aus, um den öffentlichen Schlüssel auf die Hostserver zu kopieren:
$ ssh-copy-id host1@ip_address_1
$ ssh-copy-id host2@ip_address_2
Einrichten der Inventardatei
Ansible verwendet die inventory file
um Informationen über die von Ansible Control Node verwalteten Remote-Server (Hosts) zu speichern. Hosts können in Gruppen oder Untergruppen organisiert werden.
Die Standard-Ansible-Inventardatei befindet sich unter /etc/ansible/hosts
, aber Sie können die Inventardatei an einem beliebigen Ort erstellen und müssen den Pfad zu Ihrer Inventardatei mit dem -i
angeben -Parameter beim Ausführen von Ansible-Befehlen.
Jetzt können Sie die Inventardatei mit Ihrem bevorzugten Editor öffnen und wie folgt ändern:
$ sudo vim /etc/ansible/hosts
Beachten Sie, dass Sie die folgenden IPs durch die IP-Adressen Ihrer Ansible-Hosts ersetzen.
[servers]
server1 ansible_host=178.0.113.111
server2 ansible_host=178.0.113.112
Überprüfen Sie das Inventar mit dem folgenden Befehl:
$ ansible-inventory --list -y
Ausgabe:
all:
children:
servers:
hosts:
server1:
ansible_host: 178.0.113.111
server2:
ansible_host: 178.0.113.112
ungrouped: {}
Verbindung testen
Es ist Zeit zu prüfen, ob Ansible eine Verbindung zu den Remote-Servern herstellen kann. Sie können das -u
verwenden -Argument, um den entfernten Benutzer auf den Servern anzugeben. Zum Beispiel:
$ ansible all -m ping -u root
Der Befehl verwendet ansible ping
Modul, um die Konnektivität von Ansible Control Node zu Remote-Servern zu überprüfen.
server1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Wenn Sie ein pong
erhalten von den Remote-Servern antworten, können Sie Ansible-Befehle und Playbooks auf diesen Servern ausführen.
Ausführen eines Ad-hoc
Befehl auf entfernten Ansible-Hosts, zum Beispiel:
$ ansible all -a "df -h" -u root
Ausgabe:
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 2.3M 744M 1% /run
/dev/sda1 20G 4.7G 15G 25% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop1 130M 130M 0 100% /snap/google-cloud-sdk/161
/dev/loop0 32M 32M 0 100% /snap/snapd/10238
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 1.7M 745M 1% /run
/dev/sda1 20G 4.2G 16G 22% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/1932
/dev/loop1 32M 32M 0 100% /snap/snapd/10492
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
Schlussfolgerung
Ansible ist jetzt im Besitz von Redhat und bringt viele Verbesserungen in den Code ein. Ansible Tower ist die Unternehmensversion von Ansible, mit der Sie Server über eine moderne webbasierte Benutzeroberfläche verwalten können.
In diesem Lernprogramm haben Sie anhand von Beispielen gelernt, wie Sie Ansible unter Ubuntu und die grundlegende Einrichtung installieren. Danke fürs Lesen und bitte hinterlassen Sie Ihren Vorschlag im Kommentarbereich unten.