Hinweis:

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:

Voraussetzungen

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.

  1. Öffnen Sie ein Terminal auf dem Luna Desktop.

  2. Klonen Sie das Projekt linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Wechseln Sie in das Arbeitsverzeichnis.

    cd linux-virt-labs/olam
    
  4. Installieren Sie die erforderlichen Sammlungen.

    ansible-galaxy collection install -r requirements.yml
    
  5. 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
    
  6. 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, die ansible_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.

  1. Legen Sie eine Variable fest, die der IP-Adresse des Kontrollknotens entspricht.

    export CONTROL="<ip_address_of_ol-control-node>"
    
  2. Öffnen Sie ein Terminal, und kopieren Sie das SSH-Schlüsselpaar in den Kontrollknoten.

    scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
    
  3. Legen Sie die Berechtigungen für den SSH-Private Key fest.

    ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
    
  4. Stellen Sie eine SSH-Verbindung zum ol-control-node-System her.

    ssh oracle@$CONTROL
    
  5. Installieren Sie das Oracle Linux Automation Engine-Package und die Abhängigkeiten.

    sudo dnf install -y ansible-core
    

    Das Package ansible-core ist im Repository ol8_appstream von Oracle Linux verfügbar.

  6. 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:

  1. Projektverzeichnis erstellen

    mkdir ~/ol-automation
    
  2. 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
    
  3. Geben Sie den Einfügemodus vi ein, indem Sie i eingeben.

  4. 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
    
  5. Speichern und schließen Sie die Datei. Wenn Sie vi verwenden, können Sie ESC, :wq! und ENTER eingeben.

  6. 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 Abschnitt ungrouped gilt für alle Hosts, die nicht zu einer aufgelisteten Gruppe gehören.

  7. Bearbeiten Sie das Bestandsverzeichnis, und platzieren Sie den Host in einer Gruppe namens development.

    vi inventory
    
  8. Geben Sie den Einfügemodus vi ein, indem Sie i eingeben.

  9. Fügen Sie den Gruppennamen in Klammern mit der folgenden IP-Adresse hinzu, wie im Beispiel gezeigt.

    Beispiel:

    [development]
    130.61.100.96
    
  10. Speichern und schließen Sie die Datei. Wenn Sie vi verwenden, können Sie ESC, :wq! und ENTER eingeben.

  11. 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:

  1. 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.

  2. 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 Variablen ansible_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 Variablen ansible_host zu.

  3. Fügen Sie den Remotebenutzer zur Bestandsdatei hinzu.

    vi inventory
    
  4. Geben Sie den Einfügemodus vi ein, indem Sie i eingeben.

  5. 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 Beispielnamen ol-host verwenden.

  6. Speichern und schließen Sie die Datei. Wenn Sie vi verwenden, können Sie dies tun, indem Sie ESC, :wq! und ENTER eingeben.

  7. Führen Sie das Modul ping erneut aus, und verwenden Sie dabei den Hostnamen anstelle von all.

    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:

  1. Erstellen Sie eine neue Playbook-Datei.

    vi hello.yml
    
  2. Geben Sie den Einfügemodus vi ein, indem Sie i eingeben.

  3. 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 Zeile hosts, die angibt, welche Hosts verwaltet werden sollen. Der Wert all 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.

  4. Speichern und schließen Sie die Datei. Wenn Sie vi verwenden, können Sie dies tun, indem Sie ESC, :wq! und ENTER eingeben.

  5. 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.

  6. 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.

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.