Hinweis:
- Dieses Tutorial ist in einer von Oracle bereitgestellten kostenlosen Übungsumgebung verfügbar.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Playbook mit Oracle Linux Automation Engine schreiben
Einführung
Die Oracle Linux Automation Engine, eine Komponente von Oracle Linux Automation Manager, ist ein Automatisierungstool für die Bereitstellung von Software, die Konfiguration von Systemen und die Orchestrierung von Aufgaben wie Upgrades und Updates in Form von Playbooks. Oracle Linux Automation Engine verwendet zunächst das Package ansible
und stammt jetzt aus dem Open-Source-Softwarepackage ansible-core
.
Das folgende Tutorial führt das Schreiben von Playbooks mit Oracle Linux Automation Engine ein.
Ziele
In diesem Tutorial erfahren Sie, wie Sie:
- Oracle Linux Automation Engine installieren
- Bestandsdatei erstellen
- Ad-hoc-Befehl ausführen
- Schreibe ein Spielbuch
Voraussetzungen
-
Mindestens zwei Oracle Linux-Systeme mit der folgenden Konfiguration:
- ein Nicht-Root-Benutzer mit
sudo
-Berechtigungen - SSH-Tastaturpaar für Nicht-Root-Benutzer
- die Möglichkeit, mit einer passwortlosen SSH-Anmeldung von einem Host zum anderen SSH zu verwenden
- ein Nicht-Root-Benutzer mit
Oracle Linux bereitstellen
Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs
GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.
-
Öffnen Sie ein Terminal auf dem Luna Desktop.
-
Klonen Sie das Projekt
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Wechseln Sie in das Arbeitsverzeichnis.
cd linux-virt-labs/olam
-
Installieren Sie die erforderlichen Sammlungen.
ansible-galaxy collection install -r requirements.yml
-
Aktualisieren Sie die Oracle Linux-Instanzkonfiguration.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ol-control-node" type: "control" 2: instance_name: "ol-host" type: "remote" EOF
-
Stellen Sie die Übungsumgebung bereit.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
Die kostenlose Übungsumgebung erfordert die zusätzliche Variable
local_python_interpreter
, dieansible_python_interpreter
für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python installiert, das sich unter den python3.6-Modulen befindet.Die Standard-Deployment-Ausprägung verwendet die AMD-CPU und Oracle Linux 8. Um eine Intel-CPU oder Oracle Linux 9 zu verwenden, fügen Sie dem Deployment-Befehl
-e instance_shape="VM.Standard3.Flex"
oder-e os_version="9"
hinzu.Wichtig: Warten Sie, bis die Arbeitsmappe erfolgreich ausgeführt wurde, und erreichen Sie die Aufgabe "Unterbrechen". In dieser Phase des Spiels ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Beachten Sie die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten sowie alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung benötigt werden.
Oracle Linux Automation Engine-Kontrollknoten einrichten
Der Kontrollknoten ist das System zur Ausführung der Oracle Linux Automation Engine-Playbooks. Für die Ausführung von Playbooks ist die Installation des Oracle Linux Automation Engine-Packages erforderlich.
-
Legen Sie eine Variable fest, die der IP-Adresse des Kontrollknotens entspricht.
export CONTROL="<ip_address_of_ol-control-node>"
-
Öffnen Sie ein Terminal, und kopieren Sie das SSH-Schlüsselpaar in den Kontrollknoten.
scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
-
Legen Sie die Berechtigungen für den SSH-Private Key fest.
ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
-
Stellen Sie eine SSH-Verbindung zum ol-control-node-System her.
ssh oracle@$CONTROL
-
Installieren Sie das Oracle Linux Automation Engine-Package und die Abhängigkeiten.
sudo dnf install -y ansible-core
Das Package
ansible-core
ist im Repositoryol8_appstream
von Oracle Linux verfügbar. -
Testen Sie die Packageinstallation.
ansible --version
In der Ausgabe werden die Befehlsversion, Konfigurationsdetails und die Python-Versionsabhängigkeit angezeigt.
Hinweis: Wenn in der Ausgabe FEHLER: Für Ansible muss die Gebietsschemacodierung UTF-8 sein; Keine erkannt. angezeigt wird, weist dies auf eine falsche Gebietsschemaeinstellung für
ansible
hin. Beheben Sie das Problem, indem Sie die folgenden beiden Umgebungsvariablen festlegen:export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Bestand erstellen
Die Bestandsdatei enthält Details zu den Hosts, die zu Ihrer Infrastruktur gehören oder die Sie mit Oracle Linux Automation Engine verwalten. In diesen Details wird beschrieben, wie Sie bei der Ausführung von Ad-hoc-Befehlen oder -Playbooks eine Verbindung zu diesen Hosts herstellen.
IP-Adresse oder Hostnamen erfassen
Um einen Bestand für Oracle Linux Automation Engine zu erstellen, müssen Sie die IP-Adresse oder den auflösbaren Hostnamen des Systems oder der Systeme bestimmen, die Sie verwalten. Die Schritte können je nach Systemtyp und Deployment-Ort variieren.
In der bereitgestellten kostenlosen Übungsumgebung benötigen wir die IP-Adresse des ol-host
-Systems, die wir auf der Registerkarte Luna Lab-Ressourcen finden.
Bestandsdatei erstellen
Die Oracle Linux Automation Engine platziert den Standardbestand in /etc/ansible/hosts
. Außerdem ist eine Bestandsdatei auf Projektebene zulässig. Wenn Sie einen Bestand auf Projektebene verwenden, müssen Sie den Pfad zur Bestandsdatei mit der Option -i
angeben, wenn Sie Ad-hoc-Befehle oder Playbooks ausführen.
Von einem Terminal auf dem Oracle Linux Automation Engine-Kontrollknoten:
-
Projektverzeichnis erstellen
mkdir ~/ol-automation
-
Wechseln Sie in das neue Verzeichnis, und öffnen Sie mit dem Texteditor Ihrer Wahl eine neue Bestandsdatei. Hier verwenden wir
vi
.cd ~/ol-automation
vi inventory
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie die öffentliche IP-Adresse des angegebenen ol-host-Systems hinzu. Die Datei darf nur die IP-Adresse enthalten.
Beispiel:
130.61.100.96
-
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können SieESC
,:wq!
undENTER
eingeben. -
Validieren Sie die Bestandsdatei.
ansible-inventory -i inventory --list
In der Ausgabe werden die Bestandsinformationen angezeigt.
Beispielausgabe:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] }, "ungrouped": { "hosts": [ "130.61.100.96" ] } }
Die Referenz
all
bezieht sich auf jeden Host in der Bestandsdatei, und der Abschnittungrouped
gilt für alle Hosts, die nicht zu einer aufgelisteten Gruppe gehören. -
Bearbeiten Sie das Bestandsverzeichnis, und platzieren Sie den Host in einer Gruppe namens
development
.vi inventory
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie den Gruppennamen in Klammern mit der folgenden IP-Adresse hinzu, wie im Beispiel gezeigt.
Beispiel:
[development] 130.61.100.96
-
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können SieESC
,:wq!
undENTER
eingeben. -
Führen Sie den Validierungsschritt erneut aus, um die Gruppe anzuzeigen, die der Ausgabe hinzugefügt wurde.
ansible-inventory -i inventory --list
Die Ausgabe zeigt die aktualisierten Informationen mit der Gruppe an.
Beispielausgabe:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "development", "ungrouped" ] }, "development": { "hosts": [ "130.61.100.96" ] } }
Ad-hoc-Befehl ausführen
Oracle Linux Automation Engine verfügt über mehrere Run-Once-Module, für die kein Playbook geschrieben werden muss. Das grundlegendste davon ist das ping
-Modul, das versucht, eine SSH-Verbindung basierend auf den im Bestand angegebenen Details herzustellen.
Von einem Terminal auf dem Oracle Linux Automation Engine-Kontrollknoten:
-
Führen Sie das Modul
ping
aus.ansible all -i inventory -m ping
Mit der Option
all
wird der Befehl angewiesen, für alle Hosts ausgeführt zu werden, die in der mit der Option-i
angegebenen Bestandsdatei aufgeführt sind. Der Befehl akzeptiert auch einzelne Hostnamen oder Gruppen.Die Option
-m
gibt das auszuführende Modul an. -
Akzeptieren Sie den ECDSA-Schlüsselfingerprint, indem Sie
yes
an der Eingabeaufforderung eingeben.Je nach Umgebung kann
ping
mit der folgenden Ausgabe fehlschlagen:Beispielausgabe:
130.61.100.96 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '130.61.100.96' (ECDSA) to the list of known hosts.\r\noracle@130.61.100.96: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true }
Dieser Fehler tritt auf, weil das lokale Benutzerkonto
oracle
nicht auf dem Host vorhanden ist, den wir verwalten möchten. Beheben Sie dies, indem Sie mit der Variablenansible_user
einen gültigen Remotebenutzer zum Bestand hinzufügen. Geben Sie in der Bestandsdatei dem Host eine Hostnamensreferenz an, und weisen Sie die IP-Adresse der Variablenansible_host
zu. -
Fügen Sie den Remotebenutzer zur Bestandsdatei hinzu.
vi inventory
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie die beiden Variablen hinzu, wie im Beispiel gezeigt.
Beispiel:
[development] ol-host ansible_host=130.61.100.96 ansible_user=opc
Die kostenlose Übungsumgebung stellt ein vorkonfiguriertes System zum Testen der Remoteverwaltung bereit, das einen Benutzer namens
opc
enthält.opc
ist der Standardbenutzer, der auf einer Oracle Linux-Instanz in Oracle Cloud Infrastructure (OCI) erstellt wurde. Für den Hostnamen können Sie den Beispielnamenol-host
verwenden. -
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben. -
Führen Sie das Modul
ping
erneut aus, und verwenden Sie dabei den Hostnamen anstelle vonall
.ansible ol-host -i inventory -m ping
Der Befehl wird erfolgreich mit Ergebnissen ausgeführt, die den angezeigten Ergebnissen ähneln.
Beispielausgabe:
ol-host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Ein Playbook schreiben
Ein Playbook ist eine Reihe von Anweisungen, die in der richtigen YAML-Syntax geschrieben sind und auf einem einzelnen Host oder einer Gruppe von Hosts ausgeführt werden. Diese Dateien haben die Standarderweiterung .yml
oder .yaml
.
Unser erstes Playbook richtet sich an all
-Hosts aus der erstellten Bestandsdatei. Dieses Beispiel-Playbook besteht aus einer einzelnen Aufgabe, die eine Debug-Nachricht druckt.
Von einem Terminal auf dem Oracle Linux Automation Engine-Kontrollknoten:
-
Erstellen Sie eine neue Playbook-Datei.
vi hello.yml
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie den folgenden Text zur Playbook-Datei hinzu.
Beispiel:
--- - hosts: all tasks: - name: Print message debug: msg: Hello from Oracle Linux
Ein Playbook sollte immer mit
---
beginnen, gefolgt von einer Zeilehosts
, die angibt, welche Hosts verwaltet werden sollen. Der Wertall
gibt an, dass das Playbook auf jeden im Bestand aufgeführten Host wirkt. Alternativ können Sie eine Arbeitsmappe anweisen, Aufgaben nur für eine bestimmte Liste von Hosts oder Gruppen auszuführen, indem Sie jedes Ziel durch Doppelpunkte oder Kommas getrennt auflisten. Die Aufgabe verwendet dann das Debug-Modul, um eine Nachricht zu drucken.Die Zeile
name
bewirkt, dass Oracle Linux Automation Engine die Ausgabe im Terminal anzeigt, während das Playbook ausgeführt wird. -
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben. -
Führen Sie das hello.yml-Playbook für den Bestand aus.
ansible-playbook -i inventory hello.yml
Anstatt die Variable
ansible_user
in der Bestandsdatei zu verwenden, können Sie den Remotebenutzernamen stattdessen mit der Option-u username
in der Befehlszeile übergeben.ansible-playbook -i inventory hello.yml -u opc
Wenn alles funktioniert, wird der Befehl erfolgreich abgeschlossen und die Debug-Meldung ausgegeben.
Beispielausgabe:
PLAY [all] ********************************************************************* TASK [Gathering Facts] ********************************************************* [WARNING]: Platform linux on host ol-host is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen ce_appendices/interpreter_discovery.html for more information. ok: [ol-host] TASK [Print message] *********************************************************** ok: [ol-host] => { "msg": "Hello from Oracle Linux" } PLAY RECAP ********************************************************************* ol-host : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Da das Inventar nur einen einzelnen Host definiert,
ol-host
, wird das Playbook einmal ausgeführt. Bevor Sie die in der Arbeitsmappe aufgeführte Aufgabe ausführen, führt Oracle Linux Automation Engine eine Standard-Taskensammlung mit den Informationen Fakten aus. Diese Aufgabe ruft Informationen über den Remote-Host ab, die später verwendet werden können, um das Aufgabenverhalten durch Bedingungen anzupassen. -
Führen Sie den folgenden Ad-hoc-Befehl aus, um eine vollständige Liste der Fakten für den Host auszudrucken.
ansible ol-host -i inventory -m setup
Nächste Schritte
Diese Meldung und die Fakten-Ausgabe bestätigen, dass Sie Ihr erstes Playbook erfolgreich mit Oracle Linux Automation Engine ausgeführt haben.
Verwandte Links
- Oracle Linux Automation Manager-Dokumentation
- Oracle Linux Automation Manager-Schulung
- Oracle Linux-Schulungsstation
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Write a Playbook with Oracle Linux Automation Engine
F52968-04
Copyright ©2021, Oracle and/or its affiliates.