Die Struktur der Rollen in Ansible ermöglicht es uns, bestimmte Parameter automatisch, Aktionen, Dokumente, Skripte und Controller importieren, die auf einem vordefinierten Dokumentformat in ansible basieren. Die Hauptmethode zur Aufteilung eines Spielbuchs in viele Dokumente ist die Rolle. Es erleichtert die Schaffung komplizierter Spielbücher und erleichtert auch, wie wir sie in Ansible wiederverwenden werden. Durch die Aufteilung des Spielbuchs können Sie es in mehrere wiederverwendbare Teile trennen. Jede Rolle ist also auf ein bestimmtes Merkmal oder die beabsichtigten Ergebnisse beschränkt. Jedes der Verfahren, die zur Abschluss der Schlussfolgerung erforderlich sind, die innerhalb dieser bestimmten Rolle selbst gehalten wurde.
Struktur der Rollen in Ansible
Lassen Sie uns nun die Grundstruktur der Ansible -Rollen verstehen. Für die Verwendung von Rollen in Ansible werden wir ein neues Verzeichnis mit der genauen Identität jeder Rolle schaffen. In der Rollenhierarchie sind die Dokumente auf Subdadumgebende angeordnet. Um das Verzeichnis zu erstellen, werden wir den folgenden Befehl ansible galaxy rollen verwenden:
[root@master ansible]# Ansible-galaxy init win_package_install_role
Nachdem wir den obigen Befehl ausgeführt haben, erhalten wir das folgende gewünschte Ergebnis:
- Rollengewinn_Package_install_role wurde erfolgreich erstellt
Da Ansible-Galaxy selbst im Ansible-Tool enthalten ist, müssen wir keine weiteren Komponenten dafür installieren. Wenn Sie die hierarchische Struktur der Rolle und mehrere Verzeichnisse mit modifizierbarem Layout überprüfen möchten, werden Dokumente nach dem Ausführen des folgenden Befehls angezeigt:
[root@master Ansible]# Baum Win_Package_install_Role
Wie gezeigt, haben wir jetzt insgesamt 8 verfügbare Verzeichnisse in der Rolle mit dem Namen "Win_Package_install_Role" und 8 veränderliche Dokumente.
Manchmal müssen wir Dokumente wie Readme aktualisieren.MD und Meta/Main.YML, um Ihre Rolle richtig zu beschreiben, obwohl es nicht erforderlich ist, dass die Rolle funktioniert. Es ist wichtig, Anforderungen in Meta/Main einzubeziehen.YML, wenn die Rolle auf zusätzliche Rollen zugreifen muss, um sie auszuführen. Dies ermöglicht es Ansible, dies nach Bedarf zu erreichen. Um das neue Verzeichnis einzugeben, das wir kürzlich erstellt haben, werden wir die folgende Erklärung im Terminal schreiben.
[root@master ansible]# cd win_package_install_role
Anschließend wird das neue Verzeichnis angezeigt, das dem unten gezeigten Hauptpfad hinzugefügt wurde:
[root@master ansible] ~/win_package_install_role#
Für Ihre Rolle win_package_install_role sind keine Voraussetzungen erforderlich. Ein funktionierendes Meta-File-Format wird hier als Beispiel gezeigt. Wenn Sie es ändern möchten, um Ihren Namen, den Namen Ihres Unternehmens und gegebenenfalls auch die Lizenz zu reflektieren, indem Sie den folgenden Befehl schreiben:
[root@master ansible] ~/win_package_install_role# nano meta/main.YML
Angabe der Aufgaben der Rolle in Ansible
Am häufigsten würde die Rolle eine oder sogar mehr Aktivitäten durchführen, um das Remote -Gerät gemäß den Kriterien der Rolle einzurichten. Installieren und Einrichten von Win_Package_Install_Role ist das, was wir in dieser Situation tun sollten.
win_package_install_role /tasks /main.YML:
Wenn wir eine Rolle ausführen, sucht es standardmäßig den Unterordner „Aufgaben“ nach einem Dokument namens Main.YML und dann werden wir alle Aufgaben darin auflisten. Für komplexere Rollen können Sie die Aufgaben in mehrere Dokumente einteilen und sie vom Haupt anrufen.YML unter Verwendung der Aufgaben oder Importaufgabenmodule. Im Folgenden finden Sie den Befehl, den wir verwenden werden, um in das Verzeichnis der Aufgabe zu gelangen.
# Tasks -Datei für win_package_install_role
- Name: Abrufen product_name Installationsstatus
win_shell: 'Get-iTemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ Currentversion \ Deinstall \* | Wo -Object -Property displayName -like "*product_name*" | Format -tabellabend identifizieren, name, displayName, localpackage -autosize '
Register: Installation_Status
- debuggen:
Nachricht:
- "Produkt bereits installiert"
- "installation_status.STDOut_LINES "
Wann: Installation_Status.stdout_lines ist definiert und installation_status.stdout_lines | Länge> 0
- Meta: End_play
Wann: Installation_Status.stdout_lines ist definiert und installation_status.stdout_lines | Länge> 0
- Name: Erstellen Sie das Zielverzeichnis, wenn nicht existiert
win_file:
Pfad: "target_maachine_path"
Zustand: Verzeichnis
- Name: Laden Sie den Installateur herunter
win_get_url:
URL: "url_to_download_setup"
dest: "target_maachine_path"
Register: Download
Wann: url_to_download_setup ist definiert und url_to_download_setup != ""
- set_fact:
package_name_zip: "download.dest "
Wann: Download.fehlgeschlagen == false
- Name: dekomprimieren das Paket
win_unzip:
SRC: "Package_Name_zip"
dest: "target_maachine_path"
Delete_archive: Ja
Register: decompress_status
Wann: (package_name_zip ist definiert) und (".ZIP "in package_name_zip oder".gz "in package_name_zip oder".gz "in package_name_zip)
- Name: Setup -Dateispeicherort suchen
win_find:
Pfade: "target_maachine_path"
Muster: ["setup_name"]
Wiederholung: wahr
Register: Ergebnis
- Name: Setup -Pfad einstellen für bereitgestelltes Windows -Paket
set_fact:
Setup_path: "Ergebnis.Dateien [0].Weg"
Wann: Ergebnis.fehlgeschlagen == Falsch und Ergebnis.Matched> 0
- Name: Installation "setup_name" "
win_package:
Pfad: "setup_path"
product_id: automatisch
Zustand: Gegenwart
Argumente: /q
Register: Status
- debuggen:
msg: "setup_name erfolgreich installiert"
Wann: Status.RC == 0
- set_fact:
REFOT_REQUIRED: TRUE
Wann: Status.starten Sie die Startdauer und der Status.Neustart erforderlich
benachrichtigen:
- Starten Sie den Windows -Server neu
In diesem Dokument haben wir Aufgaben erledigt, wie wir den Namen des Produkts abgerufen haben. Wir haben ein Zielverzeichnis erstellt, wenn das Verzeichnis nicht verfügbar ist. Wir müssen die URL herunterladen, das Paket komprimieren, den Ort des Setups gefunden und haben auch den Speicherort für Fensterpaket usw. festgelegt.
win_package_install_role /default /main.YML:
Die Standardparameter sind im Standardverzeichnis definiert. Die Standardparameter sind diejenigen mit äußerster Bedeutung, was sie einfach zu ändern macht. Der in Standards/Main definierte Parameter.YML würde verwendet, wenn es nirgendwo definiert wird.
---
# Standarddatei für win_package_install_role
target_maachine_path: c: \ programFiles
win_package_install_role /var /main.YML:
Um die für die Rolle erforderlichen Parameter anzugeben, erstellen wir in diesem Schritt ein VAR -Dokument. Um Titelstreitigkeiten mit Parametern von außerhalb der Rolle zu vermeiden, ist es eine intelligente Option, dass wir die Kennungen der Rollenparameter präfixen werden.
# VARS -Datei für win_package_install_role
url_to_download_setup: https: // archiv.Apache.org/dist/httpd/binaries/win32/httpd-2.2.25-Win32-X86-NO_SSL.MSI
product_name: Apache
SETUP_NAME: HTTPD-2.2.25-Win32-X86-NO_SSL.MSI
target_maachine_path: C: \ Installateure
win_package_install_role /Handler /Main.YML:
Die Handler des Ansible werden im Verzeichnis des Handlers gespeichert. Die Aufgaben im Dokument werden als Handler bezeichnet, die während eines Spiels für die Ausführung markiert werden können, nachdem es vorbei ist. Wir könnten Handler beschäftigen, wie wir für notwendig halten.
# Handler -Datei für win_package_install_role
- Name: Windows Server neu starten
win_reboot:
Wann: RESTOOT_REQUIRED
win_package_install_role /meta /main.YML:
Sobald wir uns entscheiden, die Rolle der Galaxie zu übertragen.Ansible.com, wir werden das Meta -Verzeichnis nutzen, um Autorenmetadaten zu enthalten. Die Information von ansiblen Rollen umfasst den Verlag, der „Kalsoom“ ist und Systeme und Angehörige unterstützt.
galaxy_info:
Autor: Kalsoom
Beschreibung: Installieren Sie bereitgestelltes Windows -Paket
Firma: NG Pvt Ltd
Lizenz: Lizenz (GPL-2.0-or-later, MIT usw.)
min_ansible_version: "2.9 "
Plattformen:
- Name: Windows
Erstellen von rollen_main.YML Playbook:
In diesem Spielbuch werden wir den Namen der Rolle übergeben, die wir ursprünglich zusammen mit dem Host erstellt haben. Wir werden auch die Informationen zu den Hosts sammeln. Das Folgende ist der Befehl, mit dem das Spielbuch in Ansible erstellt wurde:
[root@master ansible]# nano rollen_main.YML
Alle:
Gastgeber:
Windows_Host:
Ansible_Host: 192.168.5.220
ansible_user: Ansible
ansible_password: ******
Ansible_Connection: WinRM
ansible_port: 5986
ansible_winrm_server_cert_validation: Ignorieren
Danach werden wir nun die Erklärung ausführen, um die gewünschte Ausgabe in das Terminal zu erhalten:
[Root@Master Ansible]# Ansible-Playbook ROLL_MAIN.YML -ich Host.YML
Abschluss
Das Konzept der Rollen und der Konstruktion einer Rolle in Ansible wurde in diesem Artikel behandelt. Die hierarchische Struktur der Rollen wurde ebenfalls abgedeckt. Jedes Verzeichnis, das unter der Rolle gespeichert wurde, wurde ausführlich erklärt. Um zu verstehen, wie Rollen in Ansible verwendet werden, haben wir zusätzlich ein Beispiel entwickelt.