GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Herunterladen und Verwenden von Ansible Galaxy-Rollen in Ansible Playbook

Ansibel ist heutzutage das Tool der Wahl, wenn Sie mehrere Geräte verwalten müssen, sei es Linux, Windows, Mac, Netzwerkgeräte, VMware und vieles mehr. Was Ansible so beliebt macht, ist seine agentenlose Funktion und granulare Steuerung. Wenn Sie mit Python gearbeitet haben oder Erfahrung mit yaml haben , werden Sie sich mit Ansible wie zu Hause fühlen. Um zu sehen, wie Sie Ansible installieren können, klicken Sie hier.

Mit Ansible-Kernmodulen können Sie fast alles verwalten, wenn Sie Playbooks schreiben möchten, aber oft gibt es jemanden, der bereits eine Rolle für ein Problem geschrieben hat, das Sie zu lösen versuchen. Nehmen wir ein Beispiel:Sie möchten NTP-Clients auf den Linux-Rechnern verwalten. Sie haben zwei Möglichkeiten, entweder eine Rolle zu schreiben, die auf die Knoten angewendet werden kann, oder ansible-galaxy zu verwenden um eine vorhandene Rolle herunterzuladen, die jemand bereits für Sie geschrieben/getestet hat. Ansible Galaxy hat Rollen für fast alle Domänen und diese lösen unterschiedliche Probleme. Sie können https://galaxy.ansible.com/ besuchen, um sich ein Bild von Domains und beliebten Rollen zu machen. Jede im Galaxy-Repository veröffentlichte Rolle wird gründlich getestet und von den Benutzern bewertet, sodass Sie eine Vorstellung davon bekommen, wie es anderen Benutzern gefallen hat.

Um mit der NTP-Idee weiterzumachen, können Sie hier eine NTP-Rolle von Galaxy suchen und installieren.

Lassen Sie uns zunächst ansible-galaxy mit dem Hilfe-Flag ausführen, um zu prüfen, welche Optionen es uns gibt

[[email protected] ~]# ansible-galaxy --help

Wie Sie aus der obigen Ausgabe sehen können, wurden einige interessante Optionen gezeigt, da wir nach einer Rolle suchen, um NTP-Clients zu verwalten. Probieren Sie die Suchoption aus, um zu sehen, wie gut sie findet, wonach wir suchen.

[[email protected] ~]# ansible-galaxy search ntp

Hier ist die abgeschnittene Ausgabe des obigen Befehls.

Basierend auf unserer Suche wurden 341 Übereinstimmungen gefunden, wie Sie der obigen Ausgabe entnehmen können, haben viele dieser Rollen nicht einmal mit NTP zu tun, was bedeutet, dass unsere Suche etwas verfeinert werden muss. Es ist jedoch gelungen, einige NTP-Rollen zu ziehen was diese Rollen sind. Aber vorher möchte ich Ihnen sagen, welche Namenskonvention hier befolgt wird. Dem Namen einer Rolle wird immer der Name des Autors vorangestellt, sodass es einfach ist, Rollen mit demselben Namen zu trennen. Wenn Sie also eine NTP-Rolle geschrieben und im Galaxy Repo veröffentlicht haben, wird sie nicht mit einem anderen Repo mit demselben Namen verwechselt.

Nachdem dies aus dem Weg geräumt ist, können wir mit unserer Aufgabe fortfahren, eine NTP-Rolle für unsere Linux-Maschinen zu installieren. Versuchen wir es mit bennojoy.ntp Für dieses Beispiel, aber bevor wir dies verwenden, müssen wir einige Dinge herausfinden, ist diese Rolle mit der Version von Ansible kompatibel, die ich ausführe. Außerdem, wie lautet der Lizenzstatus dieser Rolle. Um diese herauszufinden, führen wir den folgenden Befehl ansible-galaxy aus,

[[email protected] ~]# ansible-galaxy info bennojoy.ntp

ok, das sagt also, die Mindestversion ist 1.4 und die Lizenz ist BSD, lass es uns herunterladen

[[email protected] ~]# ansible-galaxy install bennojoy.ntp
- downloading role 'ntp', owned by bennojoy
- downloading role from https://github.com/bennojoy/ntp/archive/master.tar.gz
- extracting bennojoy.ntp to /etc/ansible/roles/bennojoy.ntp
- bennojoy.ntp (master) was installed successfully
[[email protected] ~]# ansible-galaxy list
- bennojoy.ntp, master
[[email protected] ~]#

Suchen wir die neu installierte Rolle.

[[email protected] ~]# cd /etc/ansible/roles/bennojoy.ntp/
[[email protected] bennojoy.ntp]# ls -l
total 4
drwxr-xr-x. 2 root root   21 May 21 22:38 defaults
drwxr-xr-x. 2 root root   21 May 21 22:38 handlers
drwxr-xr-x. 2 root root   48 May 21 22:38 meta
-rw-rw-r--. 1 root root 1328 Apr 20  2016 README.md
drwxr-xr-x. 2 root root   21 May 21 22:38 tasks
drwxr-xr-x. 2 root root   24 May 21 22:38 templates
drwxr-xr-x. 2 root root   55 May 21 22:38 vars
[[email protected] bennojoy.ntp]#

Ich werde diese neu heruntergeladene Rolle auf meinem Elasticsearch CentOS-Knoten ausführen. Hier ist meine Hosts-Datei

[[email protected] ~]# cat hosts
[CentOS]
elastic7-01 ansible_host=192.168.1.15 ansibel_port=22 ansible_user=linuxtechi
[[email protected] ~]#

Versuchen wir, den Knoten mit dem folgenden ansiblen Ping-Modul zu pingen,

[[email protected] ~]# ansible -m ping -i hosts elastic7-01
elastic7-01 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
[[email protected] ~]#

So sieht die aktuelle ntp.conf auf einem elastischen Knoten aus.

[[email protected] ~]# head -30 /etc/ntp.conf

Da ich in Indien bin, fügen wir den Server in.pool.ntp.org hinzu zu ntp.conf. Ich müsste die Variablen im Standardverzeichnis der Rolle bearbeiten.

[[email protected] ~]# vi /etc/ansible/roles/bennojoy.ntp/defaults/main.yml

Ändern Sie die NTP-Serveradresse im Parameter „ntp_server“, nach der Aktualisierung sollte sie wie folgt aussehen.

Als letztes muss ich jetzt mein Playbook erstellen, das diese Rolle nennen würde.

[[email protected] ~]# vi ntpsite.yaml
---
 - name: Configure NTP on CentOS/RHEL/Debian System
   become: true
   hosts: all
   roles:
    - {role: bennojoy.ntp}

Speichern und beenden Sie die Datei

Wir sind bereit, diese Rolle jetzt auszuführen, verwenden Sie den folgenden Befehl, um das NTP-Playbook auszuführen,

[[email protected] ~]# ansible-playbook -i hosts ntpsite.yaml

Die Ausgabe des obigen NTP-Ansible-Playbooks sollte in etwa so aussehen:

Lassen Sie uns jetzt die aktualisierte Datei überprüfen. Gehen Sie zum elastischen Knoten und sehen Sie sich den Inhalt der Datei ntp.conf an

[[email protected] ~]# cat /etc/ntp.conf
#Ansible managed

driftfile /var/lib/ntp/drift
server in.pool.ntp.org

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
[[email protected] ~]#

Falls Sie keine Rolle finden, die Ihre Anforderungen erfüllt, kann ansible-galaxy Ihnen helfen, eine Verzeichnisstruktur für Ihre benutzerdefinierten Rollen zu erstellen. Dies hilft Ihren Playbooks zusammen mit den Variablen, Handlern, Vorlagen usw., die in einer standardisierten Dateistruktur zusammengestellt sind. Lassen Sie uns unsere eigene Rolle erstellen, es ist immer eine gute Praxis, ansible-galaxy die Struktur für Sie erstellen zu lassen.

[[email protected] ~]# ansible-galaxy init pk.backup
- pk.backup was created successfully
[[email protected] ~]#

Überprüfen Sie die Struktur Ihrer Rolle mit dem Baumbefehl

Lassen Sie mich kurz erklären, wofür jedes dieser Verzeichnisse und Dateien da ist, jedes davon erfüllt einen Zweck.

Die allererste ist die Standardeinstellung Verzeichnis, das die Dateien enthält, die Variablen mit enthalten, hat den niedrigsten Vorrang, wenn die gleichen Variablen im var-Verzeichnis zugewiesen werden, hat es Vorrang vor Standard. Die Handler Verzeichnis hostet die Handler. Die Datei und Vorlagen Behalten Sie alle Dateien, die Ihre Rolle möglicherweise kopieren muss, und Jinja-Vorlagen jeweils in Playbooks verwendet werden. Die Aufgaben Im Verzeichnis werden Ihre Playbooks mit den Aufgaben gespeichert. Das var-Verzeichnis besteht aus allen Dateien, die die in der Rolle verwendeten Variablen hosten. Das Testverzeichnis besteht aus einem Beispielinventar und Testplaybooks, die zum Testen der Rolle verwendet werden können. Das Meta-Verzeichnis besteht aus allen Abhängigkeiten von anderen Rollen zusammen mit den Informationen zur Urheberschaft.

Schließlich README.md Datei besteht einfach aus einigen allgemeinen Informationen wie Beschreibung und Mindestversion von Ansible, mit der diese Rolle kompatibel ist.


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. So installieren und verwenden Sie Ansible unter Debian 11

  3. So erstellen Sie ein Ansible-Playbook

  4. So verwenden Sie Ansible zum Installieren und Konfigurieren von Redis 6 unter Debian 11

  5. RHCE Ansible Series #9:Ansible-Rollen

So erstellen und verwenden Sie benutzerdefinierte Fakten in Ansible

So definieren und verwenden Sie Handler in Ansible Playbooks

So erstellen und führen Sie eine Ansible Playbook-Datei aus

Ansible-Rollen und ihre Verwendung in Playbooks

Wie man Ansible verwendet, um Vim zu konfigurieren

So installieren und verwenden Sie Ansible unter Debian 10