So installieren Sie Ansible unter Ubuntu

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 Tool, das in Python geschrieben wurde.

Mit Ansible wird die Automatisierung und Steuerung einer großen Anzahl von Servern vereinfacht. Dies machte das System admin oder DevOps-Ingenieur verwalten 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, um Aufgaben auszuführen, und eine YAML-Datei, um Bereitstellungsinformationen zu definieren.

Dieses Tutorial zeigt Ihnen, wie Sie ansible unter Ubuntu 20.04 installieren und die Grundlagen lernen.

Ansible Control Node und Hosts

Ansible Control Nodes ist ein Computer, auf dem Ansible installiert ist und einen oder mehrere Remote-Hosts steuert. 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 die Operation durch die Verwendung von SSH, sodass Hosts nur den SSH-Dienst ausführen und den Port öffnen müssen.

Im folgenden Abschnitt erfahren wir, wie Sie einen Kontrollknoten einrichten und Informationen von Hosts abrufen.

Anforderungen

  • Ein Kontrollknoten mit SSH-Schlüsselpaar
  • Ein oder mehrere Hosts – Remote-Server mit hinzugefügtem öffentlichen SSH-Schlüssel

Für die Demonstration verwenden wir für beide Zwecke einen Ubuntu 20.04-Rechner.

Ansible unter Ubuntu installieren

Ansible-Komponenten werden auf dem Steuerknoten installiert. Der folgende Befehl zum Installieren von Ansible unter Ubuntu.

Rufen Sie zunächst eine aktualisierte Liste aller Pakete aus ihren Quellen ab:

$ 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 zu erstellen sudo Berechtigungen auf dem Ansible-Steuerungsknoten. Richten Sie dann ein SSH-Schlüsselpaar für diesen Benutzer ein.

Erstellen Sie einen neuen Nicht-Root-Benutzer:

$ sudo adduser controller

Dann musst du zuweisen sudo Erlaubnis zu controller Nutzer:

$ sudo usermod -aG sudo controller

Jetzt können Sie sich bei der controller 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 vom Ansible Control Node für jeden Host aktivieren. Grundsätzlich müssen wir den öffentlichen Schlüssel des Kontrollknotens auf jedem Host in die Datei “authorized_keys” kopieren.

In diesem Tutorial verwenden wir zwei ansible Hosts: host1@ip_address_1 und host2@ip_address_2.

Führen Sie auf dem Ansible-Steuerungsknoten 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 entfernten Server (Hosts) zu speichern, die von Ansible Control Node verwaltet werden. 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 angeben -i 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 an der Zeit zu überprüfen, ob das Ansible eine Verbindung zu den Remote-Servern herstellen kann. Du kannst den … benutzen -u Argument, um den entfernten Benutzer auf den Servern anzugeben. Für example:

$ ansible all -m ping -u root

Der Befehl use 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 a . erhalten pong Wenn Sie von den Remote-Servern antworten, können Sie auf diesen Servern ansible Befehle und Playbooks ausführen.

Laufen und Ad-hoc Befehl auf entfernten Ansible-Hosts, für example:

$ 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

Fazit

Ansible gehört jetzt Redhat und bringt viele Verbesserungen des Codes mit sich. Ansible Tower ist die Unternehmensversion von Ansible, mit der Sie Server über eine moderne webbasierte Benutzeroberfläche verwalten können.

In diesem Tutorial haben Sie anhand von Beispielen erfahren, wie Sie Ansible auf Ubuntu installieren und die grundlegende Einrichtung durchführen. Vielen Dank fürs Lesen und hinterlassen Sie bitte Ihren Vorschlag im Kommentarbereich unten.