Ansible ist ein Automatisierungstool zum Verwalten mehrerer Remote-Hosts von einem einzigen Computer aus. Es bietet Ihnen eine einfache Konfiguration für eine große Anzahl von Remote-Hosts. Wenn Sie beispielsweise dieselben Aufgaben auf mehreren Computern ausführen, bietet Ihnen Ansible die Möglichkeit, diese Aufgaben zu automatisieren.
Dieses Tutorial hilft Ihnen bei der Installation von Ansible auf Ubuntu 16.04 (Xenial) LTS-Systemen.
Schritt 1 – SSH-Zugriff konfigurieren
Sie können schlüsselbasiertes SSH für die Remote-Linux-Ansible-Hosts konfigurieren. Für SSH ist also kein Passwort erforderlich. Ansible erlaubt Ihnen auch, ein Passwort für ssh zu verwenden, aber schlüsselbasiertes ssh ist sicherer.
Generieren Sie ein SSH-Schlüsselpaar auf Ihrem Ansible-Server:
ssh-keygen
Kopieren Sie den öffentlichen Schlüssel auf alle Ihre Remote-Hosts, die Sie benötigen, um sich über diesen SSH-Schlüssel zu verbinden.
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_host
Schritt 2 – Installieren Sie Ansible auf Ubuntu 16.04
Ansible stellt sein offizielles PPA für die Installation auf Ubuntu-Systemen zur Verfügung. Führen Sie den folgenden Befehl aus, um Ansible PPA für Ihr Ubuntu 18.04-System zu konfigurieren.
sudo apt-add-repository ppa:ansible/ansible
Führen Sie dann die folgenden Befehle aus, um Ansible zu installieren:
sudo apt update sudo apt install ansible
Schritt 3 – Ansible-Hosts und -Gruppen konfigurieren
Ihr Server ist mit Ansible bereit für Remote-Host-Management und -Automatisierung. Sie können eine Reihe von Hosts haben, die Sie benötigen, und sie mit einem einzigen Ansible-Server verwalten.
Hier müssen Sie Ihre Remote-Systeme in der Ansible-Hosts-Datei (/etc/ansible/hosts) definieren. Sie können auch Gruppen von Hosts mit ähnlichen Typen erstellen. Hier müssen Sie Ihre Hosts richtig in Gruppen organisieren. Gruppen werden verwendet, um eine Aufgabe auf allen darunter definierten Remote-Hosts auszuführen.
Bearbeiten Sie die Ansible-Hosts-Konfigurationsdatei. Zum Beispiel:
sudo nano /etc/ansible/hosts
Fügen Sie Ihre Gastgeber hinzu und organisieren Sie sie in Gruppen. Ein Host kann mehreren Gruppen hinzugefügt werden .
[webservers] web-host1 web-host2 [dbservers] db-host1
Das folgende Bild hilft Ihnen, Gruppen und Hosts unter einer Gruppe zu verstehen.
Konfiguration einzelner Host-Variablen
Sie müssen Einstellungen für Ihre Hosts definieren. Die Host-spezifische Datei muss denselben Namen wie Host haben (z. B.:web-host1) im Verzeichnis host_vars.
sudo mkdir /etc/ansible/host_vars sudo vi /etc/ansible/host_vars/web-host1
Fügen Sie dieser Datei die SSH-Einstellungen für web-host1 hinzu.
ansible_ssh_host: 192.168.1.15 ansible_ssh_port: 22 ansible_ssh_user: root
Falls Sie Schritt 1 für die SSH-Verbindung für diesen Host nicht verwendet haben. Sie können auch eine der folgenden Methoden zur Konfigurationsdatei von web-hosts1 für die Authentifizierung hinzufügen.
ansible_ssh_pass: secret_password ansible_ssh_private_key_file: /home/rahul/.ssh/aws.pem
Konfiguration der Gruppenvariablen
Sie können allgemeine Variableneinstellungen einer Gruppe unter Gruppenkonfigurationen konfigurieren. Der Gruppendateiname muss mit dem Gruppennamen (zB:Webserver) unter group_vars
übereinstimmen Verzeichnis.
sudo mkdir /etc/ansible/group_vars sudo vi /etc/ansible/group_vars/webservers
Fügen Sie dieser Datei die gemeinsamen Variablen hinzu, die von allen Hosts verwendet werden, die dieser Gruppe hinzugefügt wurden.
ansible_ssh_port: 22 ansible_ssh_user: root
Schritt 4 – Ansible-Setup testen
Ihr Ansible-Setup ist zum Testen bereit. So testen Sie die Konnektivität aller Hosts mit einem Ping-Modul wie:
ansible -m ping all
Um die Konnektivität für einen bestimmten Host oder eine Gruppe von Hosts zu testen
ansible -m ping web-host1 ## Specific host ansible -m ping webservers ## Specific group
Sie können einen Befehl auch mit dem Shell-Modul ausführen. Testen Sie beispielsweise den freien Speicher auf web-host1. Sie können dieselbe Aufgabe auch für eine Gruppe ausführen. Verwenden Sie einfach den Gruppennamen anstelle des Hostnamens.
ansible -m shell -a 'free -m' web-host1