In diesem Artikel bespreche ich die Voraussetzungen für die Installation von Ansible, die Ansible-Installation mithilfe des Satellite-Servers, die Einrichtung von Ansible für die Automatisierung, eine Einführung in Playbooks, Inventardateien und einen Anwendungsfall für Ansible. Lesen Sie den ersten Artikel, Entmystifizierung von Ansible für Linux-Systemadministratoren, falls Sie dies noch nicht getan haben.
Voraussetzungen für die Installation von Ansible
Um Ansible in Ihrer Umgebung zu verwenden, müssen Sie einen Verwaltungsknoten einrichten (auch Kontrollknoten genannt ), wo Sie Ansible installieren. Sie können Ansible auf jedem Computer mit Python 2 (Version 2.7) oder Python 3 (Version 3.5 und höher) installieren. Mit RHEL 7 haben wir standardmäßig Python 2.7 installiert und mit RHEL 8 haben wir standardmäßig Python 3.6. Um alle Ansible-Module verwenden zu können, müssen Sie Python auch auf den verwalteten Knoten installieren. Standardmäßig verwendet Ansible SSH, um mit verwalteten Knoten zu kommunizieren. Verwaltete Knoten können auch SFTP oder SCP für die Kommunikation verwenden, und dies kann in der Ansible-Konfigurationsdatei (ansible.cfg
) geändert werden ).
Wenn Sie RHEL Satellite verwenden, um Ansible auf einem RHEL 8-System zu installieren, stellen Sie sicher, dass Sie die Repositories für Red Hat Ansible Engine 2.9 für RHEL 8 x86_64 (RPMs) von der Satellite-GUI hinzufügen und die Repositories vom CDN mit dem Satellite synchronisieren. Auf dem Kontrollknoten müssen Sie sich beim Satellite-Server registrieren, die Satellite-Tools aktivieren und das Ansible-Repository aktivieren, indem Sie die folgenden Befehle verwenden:
# subscription-manager repos --enable satellite-tools-6.6-for-rhel-8-x86_64-rpms
Repository' satellite-tools-6.6-for-rhel-8-x86_64-rpms' is enabled for this system.
# subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms
Repository' ansible-2.9-for-rhel-8-x86_64-rpms' is enabled for this system.
Ansible auf RHEL installieren
Um Ansible nach der Registrierung beim Satellite-Server auf dem RHEL 8-Steuerknoten zu installieren, führen Sie den Befehl yum install ansible
aus . Dieser Befehl installiert sechs Pakete:
- Installieren Sie Ansible aus dem Ansible-Repo:
- Ansibel
- Installieren Sie Abhängigkeiten:
- sshpass
- Python3-markupsafe
- Python3-jinja2
- Python3-Babel
- Schwache Abhängigkeit installieren:
- Python3-jmespath
Führen Sie nach der Installation ansible --version
aus Befehl, um die installierte Version von Ansible zu überprüfen.
# ansible --version
ansible 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/site-packages/ansible-2.9.6-py3.6.egg/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Oct 11 2019, 15:04:54) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
Nach der Installation können Sie Änderungen an den standardmäßigen Ansible-Einstellungen vornehmen, indem Sie Parameter in der ansible.cfg
ändern Datei.
[ Vielleicht gefällt Ihnen auch die Lektüre: Renewing my Thrill at Work with Ansible ]
Ansible für die Automatisierung einrichten
Nachdem Ansible installiert ist, müssen Sie die schlüsselbasierte SSH-Authentifizierung (die asymmetrische Kryptografie verwendet) vom Kontrollknoten zu den verwalteten Knoten konfigurieren, damit Ansible reibungslos funktioniert. Sie müssen ein Schlüsselpaar auf Ihrem Kontrollknoten generieren und den öffentlichen Schlüssel an die verwalteten Knoten übertragen. Verwenden Sie den Befehl ssh-keygen
um das Schlüsselpaar zu generieren. Die Schlüssel werden in Ihrem Home-Verzeichnis innerhalb der .ssh
gespeichert Mappe. Die Standardschlüssel heißen id_rsa.pub
(öffentlicher Schlüssel) und id_rsa
(Privat Schlüssel). Um die schlüsselbasierte SSH-Authentifizierung auf den verwalteten Knoten zu aktivieren, führen Sie den folgenden Befehl auf Ihrem Kontrollknoten aus:
# ssh-copy-id <target user>@<IP address/Hostname of the managed node>
Beachten Sie, dass hierfür ein einmaliges Kennwort für den Zielbenutzer auf dem verwalteten Knoten erforderlich ist. Der Befehl ssh-copy-id
kopiert den öffentlichen Schlüssel des Kontrollknotens in die authorized_keys
Datei auf den verwalteten Knoten.
Nach der Konfiguration können Sie die Remote-Knoten zu einer Inventardatei hinzufügen und den Ping-Test mit dem folgenden Ad-hoc-Befehl von Ansible durchführen:
# ansible all -m ping -i <inventory-file>
Mehr über Playbooks
Playbooks sind die Dateien, in die Ansible-Funktionen geschrieben werden. Die Playbooks sind im YAML-Format geschrieben. YAML steht für Yet Another Markup Language. Playbooks sind eine der Kernfunktionen von Ansible und teilen Ansible mit, was ausgeführt werden soll. Sie sind wie eine To-Do-Liste für Ansible, die eine Reihe von Aufgaben enthält. Playbooks sind die Bausteine für alle Anwendungsfälle von Ansible. Sie können für jede Aktion unabhängige modulare Ansible-Playbooks erstellen. Sie können diese modularen Playbooks mit dem Modul import_playbook in ein einzelnes Master-Playbook integrieren . Dadurch wird die Wiederverwendbarkeit der Playbooks sichergestellt. Sie können Variablen im Playbook verwenden und diese Variablen aus dem Ansible-Inventar, eingeschlossenen Dateien und während der Laufzeit übergeben. Zu den wichtigsten Merkmalen eines Ansible-Playbooks gehören:
- Fähigkeit, Aufgaben als verschiedene Benutzer auszuführen, basierend auf dem Werden Methode
- Steuern Sie anhand der Hosts in Ihrem Inventar, wo jede Aufgabe ausgeführt werden soll
- Geben Sie Bedingungen und Schleifen in Ihrem Code an
Beispiel:
Weitere Informationen zum Inventar
Inventar ist die Liste der Knoten, die von Ansible verwaltet werden können. Sie können einzelne verwaltete Hosts angeben oder eine Gruppe von Hosts in der Inventardatei erstellen. Sie können jedem verwalteten Host Variablen zuweisen, die vom Playbook verwendet werden können, während Aufgaben auf diesem bestimmten Host ausgeführt werden. Die Standardinventardatei ist /etc/ansible/hosts
, aber es wird empfohlen, dass Sie Ihre eigene Inventardatei erstellen und sie während der Ausführung des Playbooks mit -i
aufrufen Befehlsoption. Inventardateien können im INI- oder YAML-Format vorliegen. Sie können entweder eine statische Bestandsdatei oder eine dynamische Liste von Hosts verwalten.
Beispiel:
# cat hosts-b2b
[webservers]
b2bwebprod1 urlpath=https://b2bprod.abc.xyz
b2bwebprod2
b2bwebprod3
[appservers]
b2bappprod1
b2bappprod2
b2bappprod3
b2bappprod4
b2bappprod5
[dbservers]
b2bmasterdb
b2bslavedb
Ansible-Anwendungsfall
Sehen wir uns einen Ansible-Anwendungsfall für die Systemüberwachung an. Wir können Playbooks für verschiedene sysadmin-bezogene Überwachungsaufgaben erstellen, darunter:
- Überwachung der Dateisystemnutzung und E-Mail-Benachrichtigung, wenn der Festplattenspeicher zu mehr als 90 % belegt ist
- Anwendungs- und Portverfügbarkeit
- Datenbankverfügbarkeit durch Verbinden und Abfragen der Datenbank
- URL-Verfügbarkeit durch Verwendung des uri Modul und E-Mail-Benachrichtigungen, wenn der Rückgabecode größer als 200 ist. Sie können auch Wiederholungsversuche und Verzögerungsfunktionen im uri verwenden Modul, um doppelt sicher zu sein
- Verfügbarkeit des Dienstes, melden, wenn der Dienst ausgefallen ist, und versuchen, ihn neu zu starten
- Überprüfen Sie die Komponentenversionen, um ein aktuelles Inventar zu halten
- Überwachen Sie die Systemverfügbarkeit und senden Sie eine E-Mail-Benachrichtigung, wenn ein System nicht erreichbar ist
[ Brauchen Sie mehr zu Ansible? Nehmen Sie an einem kostenlosen technischen Überblickskurs von Red Hat teil. Ansible Essentials:Einfachheit in der Automatisierung Technischer Überblick. ]
Abschluss
Dieser Artikel gibt Ihnen einen Überblick über die Installation von Ansible, das Einrichten von Ansible, das Erstellen von Playbooks und das Verwalten von Inventar mit Beispielen. Bleiben Sie dran für weitere Artikel zur Automatisierung mit Ansible.