Hinweis:

Oracle Linux-Aufgaben mit Oracle Linux Automation Engine ausführen

Einführung

Mit Oracle Linux Automation Engine können Administratoren das anfängliche Setup von Oracle Linux automatisieren und andere administrative Jobs mit einem Infrastructure-as-Code-(IaC-)Konfigurationsverwaltungstool über eine Reihe von Spielen und Aufgaben ausführen.

Ziele

In diesem Tutorial erfahren Sie, wie Sie:

Voraussetzungen

Oracle Linux Automation Engine 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 Collections.

    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"
    olam_type: olae
    EOF
    
  6. Bestandsdatei erstellen

    cat << EOF | tee hosts > /dev/null
    localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6
    EOF
    
  7. Stellen Sie die Übungsumgebung bereit.

    ansible-playbook create_instance.yml -i hosts -e "@instances.yml"
    

    Für die kostenlose Übungsumgebung ist die zusätzliche Variable ansible_python_interpreter für localhost erforderlich, da sie das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python installiert. Der Speicherort für die Installation dieses Packages befindet sich basierend auf Ihrer Oracle Linux-Version unter den Python-Standardmodulen des Systems. Wenn Sie eine Bestandsvariable verwenden, wird verhindert, dass sich dies auf andere Hosts als localhost auswirkt.

    Die Standard-Deployment-Ausprägung verwendet die AMD-CPU. Sie können die Ausprägung der Instanzen ändern, indem Sie eine neue Definition der Ausprägungsvariablen in der Befehlszeile übergeben.

    Beispiel: -e instance_shape="VM.Standard3.Flex"

    Ebenso verwendet die Standardversion des Oracle Linux-Images die Variable os_version, die in der Datei "default_vars.yml" definiert ist. Sie können diesen Wert ändern, indem Sie die Oracle Linux-Hauptversion in der Befehlszeile übergeben.

    Beispiel: -e os_version="9"

    Wichtig: Warten Sie, bis das Playbook erfolgreich ausgeführt wird, und erreichen Sie die Unterbrechungsaufgabe. In dieser Phase des Playbooks ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Beachten Sie die vorherige Wiedergabe, bei der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten ausgegeben werden.

Schreiben Sie das anfängliche Setup-Playbook

Viele Playbooks nutzen Variablen und Variablendateien, die Schlüssel/Wert-Paare enthalten, so dass die eigentlichen Playbook-Aufgaben dynamisch sind, während der Code statisch bleibt. Ein Playbook enthält Variablen, die während der Laufzeit Teil der Wiedergaben werden, wobei das Playbook ihre Werte bei der Ausführung von Aufgaben verwendet.

Mit Oracle Linux Automation Engine können Sie diese Variablen an mehreren Standorten definieren, die jeweils eine bestimmte Prioritätsreihenfolge haben. Variablen auf Playbook-Ebene werden im Playbook mit der Direktive vars oder vars_files definiert. Die Direktive vars gibt die Variablen als Teil der Wiedergabe an, während die Direktive vars_files eine externe Datei mit den Variablen enthält. Entwickler können diese Variablen dynamisch oder statisch aus einem anderen Play erstellen, wie wir es in diesem Beispiel tun, das die Systemkonfiguration definiert, bevor das Playbook ausgeführt wird.

  1. Öffnen Sie ein neues Terminal und verbinden Sie sich über SSH mit dem ol-control-node-System.

    ssh oracle@<ip_address_of_instance>
    
  2. Prüfen Sie, ob der Oracle Linux Automation Engine-Befehl verfügbar ist.

    ansible --version
    
  3. Erstellen Sie ein Arbeitsprojektverzeichnis.

    mkdir -p ~/ol-playbook
    
  4. Erstellen Sie ein Variablenverzeichnis und eine Datei für das Projekt.

    mkdir ~/ol-playbook/vars
    
    touch ~/ol-playbook/vars/defaults.yml
    
  5. Fügen Sie die Variablen und Werte zur Datei hinzu.

       
    cat << EOF | tee ~/ol-playbook/vars/defaults.yml > /dev/null
    ---
    username: oracle
    user_default_password: oracle
    ssh_key_file: id_rsa
    ssh_private_key_file: "{{ lookup('file', lookup('env','HOME') + '/.ssh/' + ssh_key_file + '.pub') }}"
    additional_packages: ['git']
    EOF
       
    

    Diese Informationen erklären jede Variable und wie wir sie verwenden:

    • username: Der Name des sudo-Benutzers, der bei der Ausführung der Arbeitsmappe erstellt wurde. In diesem Beispiel lautet der Benutzername oracle.
    • user_default_password: Das Standardkennwort für den Benutzer oracle, wenn es erstellt wird. Das Kennwort ist erforderlich, wenn Sie sudo-Befehle ausführen.
    • ssh_key_file: Legt den Namen des SSH-Schlüsselpaares des Benutzers fest.
    • ssh_private_key_file: Kopiert den SSH-Public Key des Benutzers in die Datei authorized_key des Remotebenutzers unter dem angegebenen Pfad. Im Beispiel wird das lookup-Plug-in verwendet, um den Public Key id_rsa.pub im Verzeichnis $HOME/.ssh/ der lokalen Benutzer zu suchen.
    • additional_packages: Fügen Sie den Namen aller zusätzlichen Packages hinzu, die im Arrayformat installiert werden sollen. Jedes Package im Array muss in einfache Anführungszeichen gesetzt und durch Komma getrennt sein. Wenn Sie ein Appstreammodul wie container-tools installieren, sieht das Array wie ['git',' @container-tools:ol8'] aus.
  6. Erstellen Sie die Playbook-Datei.

       
    cat << EOF | tee ~/ol-playbook/setup.yml > /dev/null
    ---
    - hosts: all
      become: yes
      vars_files:
        - vars/defaults.yml
    
      tasks:
    
      - name: Generate new ssh keypair
        community.crypto.openssh_keypair:
          path: "~/.ssh/{{ ssh_key_file }}"
          size: 2048
          comment: olam ssh keypair
        become: true
        become_user: "{{ username }}"
        delegate_to: localhost
    
      - name: Add a user account with access to sudo
        ansible.builtin.user:
          name: "{{ username }}"
          password: "{{ user_default_password | password_hash('sha512') }}"
          comment: Default Oracle user
          groups: wheel
          append: yes
          update_password: on_create
    
      - name: Set the authorized key for the user using a local public key file
        ansible.posix.authorized_key:
          user: "{{ username }}"
          state: present
          key: "{{ ssh_private_key_file }}"
    
      - name: install additional packages
        ansible.builtin.dnf:
          name: "{{ additional_packages }}"
          state: latest
    EOF
       
    

    Die spezifischen Aufgaben und Modulnamen eines Spielbuchs zielen darauf ab, das Spielbuch selbstdokumentierend zu machen. Diese Elemente weisen darauf hin, wo und wer die Stücke ausführt:

    • hosts: all: Diese Zeile gibt an, welche Hosts aus dem Bestand die Aufgaben ausführen.
    • become: yes: Weist die Aufgaben in diesem Abschnitt an, standardmäßig mit der Berechtigung sudo auszuführen.
    • vars_files" Diese Anweisung lädt die Variablendatei mit der Playbook-Konfiguration dieses Tutorials.

Erforderliche Sammlungen installieren

Das ansible-core-Package enthält eine minimale Gruppe von Modulen zur Verwaltung von Hosts, die in der ansible.builtin-Collection organisiert sind. Eine Collection ist eine Methode zum Verteilen von Playbooks, Rollen, Modulen oder Plug-ins, die eine bestimmte Aufgabe ausführen. ansible-core erfordert das Herunterladen und Installieren aller Module oder Sammlungen, die außerhalb der Built-Ins erforderlich sind.

Da das obige Spielbuch die Sammlung ansible.posix verwendet, müssen wir diese Sammlung und andere installieren. Der einfachste Weg dazu besteht darin, eine Anforderungsdatei zu erstellen, die alle Abhängigkeiten enthält.

  1. Erstellen Sie eine Anforderungsdatei.

    cat << 'EOF' | tee ~/ol-playbook/requirements.yml > /dev/null
    ---
    collections:
      - name: ansible.posix
      - name: community.crypto
    EOF
    
  2. Installieren Sie die Sammlung.

    ansible-galaxy collection install -r ~/ol-playbook/requirements.yml
    

    Die Ausgabe zeigt, wie die komprimierte Archivdatei von der Galaxy-Site abgerufen und dann in Ihr Home-Verzeichnis unter .ansible/collections. installiert wird.

    Hinweis: Wenn in der Ausgabe ERROR: Ansible requires the locale encoding to be UTF-8; Detected None. angezeigt wird, gibt dies eine falsche Gebietsschemaeinstellung für ansible an. 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"
    

Playbook ausführen

Bevor Sie das Playbook ausführen, müssen Sie eine Bestandsdatei für dieses Projekt erstellen, die auf die Remote-Oracle Linux-Instanz verweist, die wir verwalten möchten.

  1. Weisen Sie die IP-Adresse des alten Hosts einer Variablen für unser Remote-System zu.

    Diese Variable erleichtert das Skripting der Erstellung der Bestandsdatei.

    export REMOTE=<ip_address_of_instance>
    
  2. Erstellen Sie eine neue Bestandsdatei im Projektverzeichnis.

    cat << EOF | tee ~/ol-playbook/inventory > /dev/null
    [production]
    ol-host ansible_host=$REMOTE
    EOF
    
  3. Wechseln Sie in das Projektarbeitsverzeichnis.

    cd ~/ol-playbook
    
  4. Testen Sie die Verbindung mit dem Ad-hoc-Befehl ping.

    ansible ol-host -i ~/ol-playbook/inventory -m ping -u opc
    
    • -u: Übergibt den Benutzernamen für die SSH-Verbindung. In der kostenlosen Übungsumgebung verwenden wir den Benutzer opc, den Standardbenutzer, der auf Oracle Linux-Instanzen in Oracle Cloud Infrastructure (OCI) bereitgestellt wird. Genehmigen Sie den ECDSA-Schlüssel-Fingerprint, indem Sie yes an der Eingabeaufforderung eingeben, um fortzufahren.

    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"
    }
    
  5. Führen Sie das Spielbuch aus.

    ansible-playbook -i inventory setup.yml -u opc
    

    Der Befehl sollte erfolgreich ausgeführt werden, wobei die veränderten Ergebnisse jeder Wiedergabe angezeigt werden.

Mit Remotehost verbinden

Wenn das Playbook erfolgreich ausgeführt wird, können wir eine Verbindung zum Remote-System mit dem Benutzer herstellen, wie in der Variablen username definiert.

  1. Stellen Sie über SSH eine Verbindung zum ol-host-System her.

    ssh oracle@$REMOTE
    

    Wenn Sie den Wert der Variablen ssh_key_file geändert haben, müssen Sie die Option "-i" an ssh übergeben und auf die Private-Key-Datei des angegebenen Paares verweisen.

    Beispiel:

    ssh -i ~/.ssh/<local_ssh_private_key> <username>@<ip_address_of_host>
    
  2. Prüfen Sie die Installation der angeforderten Packages.

    Nach der Anmeldung können Sie prüfen, ob das git-Package in der Arbeitsmappe installiert ist.

    git --version
    
  3. Abmeldung vom Remotehost läuft.

    exit
    

Repository hinzufügen

Oracle Linux bietet eine sichere, skalierbare und zuverlässige Plattform für die Bereitstellung Ihrer geschäftskritischen Anwendungen. Wenn Sie ein zusätzliches Repository hinzufügen, wird ein neues Oracle-Produkt oder eine Fremdanwendung installiert. Oracle Linux stellt zusätzliche Packages bereit, die das Provisioning dieser zusätzlichen Repositorys verarbeiten.

Der Oracle Linux YUM-Server enthält Details zu den zahlreichen Repositorys, die Oracle anbietet.

  1. Fügen Sie diese zusätzlichen Aufgaben zur vorhandenen Playbook-Datei hinzu.

    cat << EOF | tee -a setup.yml > /dev/null
      - name: Add the EPEL repository
        ansible.builtin.dnf:
          name: oracle-epel-release-el8
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '8'
    
      - name: Add the EPEL repository
        ansible.builtin.dnf:
          name: oracle-epel-release-el9
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '9'
    
      - name: Install the htop utility package
        ansible.builtin.dnf:
          name: htop
          enablerepo: ol8_developer_EPEL
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '8'
    
      - name: Install the htop utility package
        ansible.builtin.dnf:
          name: htop
          enablerepo: ol9_developer_EPEL
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '9'
    EOF
    

    Dieses Spielbuch fügt mehrere Aufgaben innerhalb des definierten Spiels hinzu. Beim ersten Set wird das EPEL-Repository zu den vorhandenen Software-Repositorys auf der Oracle Linux-Instanz hinzugefügt. Währenddessen installiert das zweite Wiedergabeset das htop-Package auf derselben Zielhostinstanz.

    Bemerkenswerte Parameter:

    • state: present: Stellt sicher, dass das referenzierte Package bereits auf dem System vorhanden ist oder mit dnf installiert wird.
    • enablerepo: Aktiviert das spezifische Repository (falls deaktiviert) nur für die Dauer der aktuellen Aufgabe.
  2. Führen Sie das Handbuch erneut aus, um die zusätzlichen Aufgaben auszuführen.

    ansible-playbook -i inventory setup.yml -u opc
    

    Das Playbook wird erfolgreich beendet und einige Warnungen während der Ausführung angezeigt. Sie können diese Warnungen vorerst ignorieren, da sie sich nicht auf das aktuelle Playbook auswirken. Das Playbook meldet Aufgaben, die mit einem ok- oder geänderten Status ordnungsgemäß abgeschlossen wurden. Der Status changed (geändert) gibt an, dass das Playbook den Host geändert hat, indem es das Package htop (HTP) hinzugefügt oder den DNF-Cache aktualisiert hat, wenn die neueste Version eines Packages angefordert wird, anstatt nur zu prüfen, ob sie vorhanden ist. Ein ok gibt den Abschluss der Aufgabe an und erfordert keine Aktion.

  3. Prüfen Sie die Installation des Repositorys und des Packages.

    ssh oracle@$REMOTE which htop
    
  4. Führen Sie den Befehl htop aus.

    ssh oracle@$REMOTE -t htop
    

    Die Option -t des SSH-Befehls erzwingt eine TTY-Zuweisung, da für htop eine interaktive Shell erforderlich ist.

  5. Beenden Sie das Programm htop, indem Sie q eingeben.

Dateien und Verzeichnisse hinzufügen, aktualisieren und löschen

  1. Erstellen Sie ein Verzeichnis und eine Datei, indem Sie der vorhandenen Playbook-Datei Folgendes hinzufügen.

       
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Create an example directory (if it does not already exist)
        ansible.builtin.file:
          path: "/home/{{ username }}/example"
          state: directory
          mode: '0755'
        become_user: "{{ username }}"
    
      - name: Create an empty file
        ansible.builtin.file:
          path: "/home/{{ username }}/example/test.txt"
          state: touch
          # mode: u=rw,g=r,o=r
        become_user: "{{ username }}"
    EOF
       
    

    Dieses Spielbuch fügt zwei Aufgaben innerhalb des definierten Spiels hinzu. Die erste erstellt ein neues Verzeichnis namens example im Home-Verzeichnis des Remotebenutzers, die zweite erstellt eine leere Datei namens test.txt im neu erstellten Verzeichnis example.

    Zusätzliche Parameter sind zu beachten:

    • state:: Das Modul ansible.builtin.file unterstützt die folgenden Parameter: absent, directory, file, hard, link und touch. Diese Aufgaben verwenden directory, das den Verzeichnispfad erstellt, falls er noch nicht vorhanden ist, und touch, das eine leere Datei erstellt, falls sie noch nicht vorhanden ist.
    • mode: Legt die Dateisystemberechtigungen für das erstellte Objekt fest. Bei Verwendung der Befehlszeile können Sie entweder den oktalen 0644- oder den symbolischen u=rw,g=r,o=r-Modus verwenden. Der Systemstandardmodus wird angewendet, wenn Sie den Parameter mode: weglassen.
    • become_user: "": Verwendet die Berechtigungseskalationsfunktion der Oracle Linux Automation Engine, um eine Aufgabe auszuführen. In vorherigen Tutorials wurde die Eskalationsfunktionalität für die Berechtigung become: eingeführt, um eine Aufgabe als root-Benutzer auszuführen. Dieses Beispiel veranschaulicht, wie Sie eine Aufgabe mit einer ähnlichen Funktionalität als ein anderer Benutzer ausführen. Der Benutzer wird als Variable "" festgelegt, die in der Datei vars/defaults.yml als Benutzer oracle vordefiniert ist. Daher wird diese Aufgabe als Benutzer oracle ausgeführt und erbt die Standardwerte dieses Benutzers.
  2. Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.

    ansible-playbook -i inventory setup.yml -u opc
    
  3. Vergewissern Sie sich, dass das neue Verzeichnis und die neue Datei auf dem Remotehost vorhanden sind.

    ssh oracle@$REMOTE ls -al example
    

    Die Ausgabe bestätigt die Erstellung eines neuen Verzeichnisses und der leeren Datei. Beachten Sie, dass die Datei test.txt null Byte aufweist und der Benutzer oracle Eigentümer der Datei ist.

  4. Fügen Sie mehrere Dateien hinzu.

    Während der Systemeinrichtung müssen Sie möglicherweise mehrere Dateien in einem Verzeichnis erstellen. Anstatt einzelne Aufgaben zu verwenden, können Sie mehrere Dateien in einem Verzeichnis als einzelnen atomaren Vorgang erstellen.

       
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Add multiple files
        ansible.builtin.file:
          path: "/home/{{ username }}/example/{{ item }}"
          state: touch
        with_items:
        - file01.txt
        - file02.txt
        - file03.txt
        - file04.txt
        become_user: "{{ username }}"
    EOF
       
    

    Diese Aufgabe verwendet eine Schleife, um mehrere leere Dateien aus einer Liste zu erstellen.

    • path:: Definiert den Speicherort auf dem Remotesystem zum Schreiben der Dateien. Oracle Linux Automation Engine ersetzt die Variable "" während der Laufzeit durch jede item aus dem Parameter with_items.
    • with_items:: Dieser Parameter gibt die Liste von items an, für die während der Ausführung dieser Aufgabe ein Loopover ausgeführt werden soll. Während in diesem Beispiel nur vier Dateinamen verwendet werden, können Sie die Liste so lange wie nötig erstellen.
  5. Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.

    ansible-playbook -i inventory setup.yml -u opc
    
  6. Vergewissern Sie sich, dass das neue Verzeichnis und die neue Datei auf dem Remotehost vorhanden sind.

    ssh oracle@$REMOTE ls -al example
    

    In der Ausgabe werden die ursprüngliche und die neue test.txt-Datei angezeigt.

  7. Fügen Sie einer Datei eine einzelne Inhaltszeile hinzu.

       
    cat << 'EOF' | tee -a setup.yml > /dev/null     
    
      - name: Insert some text into the test.txt file
        ansible.builtin.lineinfile:
          path: "/home/{{ username }}/example/test.txt"
          line: This is a test
          create: True
          owner: "{{ username }}"
          group: "{{ username }}"
          mode: '0644'
    
      - name: Add an extra line after the line just inserted
        ansible.builtin.lineinfile:
          path: "/home/{{ username }}/example/test.txt"
          regexp: '^a test'
          insertafter: 'This is a test'
          line: This is an additional test.
          create: True
          owner: "{{ username }}"
          group: "{{ username }}"
          mode: '0644'
    
      - name: Get the contents of the test.txt file
        ansible.builtin.command: cat ~/example/test.txt
        register: command_output
        become_user: "{{ username }}"
    
      - name: Print the results of the cat command
        ansible.builtin.debug:
          msg: "{{ command_output }}"
    
      - name: Print only the lines added to the text file
        ansible.builtin.debug:
          msg: "{{ command_output.stdout_lines }}"
    EOF
       
    
    • Die ersten beiden Aufgaben verwenden die ansible.builtin.lineinfile, um einzelne Zeilen in der Datei hinzuzufügen und zu aktualisieren.

    • In den verbleibenden Aufgaben wird eine Methode zur Bestätigung der Änderungen angezeigt. Das Playbook verwendet zuerst ansible.builtin.command, um den Inhalt der aktualisierten Datei in stdout auszugeben und in einer register-Variablen im Speicher zu speichern. Anschließend wird das Modul ansible.builtin.debug verwendet, um diesen Inhalt als Teil der Wiedergabeausgabe auf den Bildschirm zu drucken. Die zweite Debug-Aufgabe zeigt eine Methode zum Beschränken der Ausgabe auf einen bestimmten Teil der JSON-Ausgabe aus der vorherigen Aufgabe.

  8. Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.

    ansible-playbook -i inventory setup.yml -u opc
    

    Bei der letzten Aufgabe in der Arbeitsmappe wird der Inhalt der Datei mit dem debug-Modul gedruckt.

  9. Fügen Sie einer Datei mehrere Inhaltszeilen hinzu.

       
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Add two lines into test.txt
        ansible.builtin.blockinfile:
          path: "/home/{{ username }}/example/test.txt"
          insertafter: 'This is some updated text that was added later.'
          block: |
            "Welcome to {{ ansible_hostname }}"
            "Last updated on {{ ansible_date_time.iso8601 }}"
    
      - name: Create a new file and insert content into it
        ansible.builtin.copy:
          content: |
            === The text below was added by Oracle Linux Automation Engine ==========
    
            Hello from the ansible.builtin.copy module.
            This task is an example of inserting multiple lines into a text file.
            You can insert more lines if you want.
    
            === The text above was added by Oracle Linux Automation Engine ===========
          dest: "/home/{{ username }}/example/testing.txt"
          mode: '0644'
        become_user: "{{ username }}"
    EOF
       
    
  10. Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.

    ansible-playbook -i inventory setup.yml -u opc
    
  11. Vergewissern Sie sich, dass in der Datei zwei neue Zeilen vorhanden sind.

    ssh oracle@$REMOTE cat example/test.txt
    

    Die Ausgabe zeigt den hinzugefügten Inhalt und interpretiert die Variablenwerte der Aufgabe basierend auf der automatischen Faktenerfassung, die das Playbook während der Laufzeit gegen den Remotehost erstellt.

  12. Bestätigen Sie die Erstellung der neuen Datei und das Hinzufügen unserer Inhalte.

    ssh oracle@$REMOTE cat example/testing.txt
    
  13. Dateien und Verzeichnisse löschen.

    Neben dem Erstellen von Dateien und Verzeichnissen und dem Hinzufügen von Text kann Oracle Linux Automation Engine diese Elemente auch löschen. Lassen Sie uns das Verzeichnis und alle Dateien, die dieses Playbook erstellt, entfernen und das System im selben Zustand wie beim Start belassen. Bei diesen Aufgaben wird zuerst der Parameter state: auf absent gesetzt, um die Liste der Dateien und dann das Verzeichnis zu entfernen. In der zweiten Aufgabe werden die Dateien und das Verzeichnis in einem einzigen Schritt entfernt. Dennoch enthalten wir die erste Aufgabe zur zusätzlichen Demonstration der Oracle Linux Automation Engine-Funktionen.

        
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Delete multiple files
        ansible.builtin.file:
          path: '{{ item }}'
          state: absent
        with_items:
          - "/home/{{ username }}/example/test.txt"
          - "/home/{{ username }}/example/file01.txt"
          - "/home/{{ username }}/example/file02.txt"
          - "/home/{{ username }}/example/file03.txt"
          - "/home/{{ username }}/example/file04.txt"
          - "/home/{{ username }}/example/testing.txt"
    
      - name: Recursively remove directory
        ansible.builtin.file:
          path: "/home/{{ username }}/example"
          state: absent
    EOF
        
    

    Mit der zweiten angezeigten Aufgabe können Sie ein Verzeichnis und alle Inhalte rekursiv löschen. Die erste Aufgabe, Dateien einzeln zu löschen, ist verfügbar, wenn Sie nur bestimmte Dateien löschen möchten. Wenn Sie sowohl Dateien als auch Dateien und Verzeichnisse löschen möchten, ist die zweite Aufgabe effizienter.

  14. Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.

    ansible-playbook -i inventory setup.yml -u opc
    
  15. Prüfen Sie, ob das angegebene Verzeichnis entfernt wurde.

    ssh oracle@$REMOTE ls
    

    Das Fehlen einer Ausgabe bestätigt, dass das angegebene Verzeichnis und die in diesem Tutorial erstellten Dateien nicht mehr vorhanden sind.

Nächste Schritte

Herzlichen Glückwunsch, es so weit zu machen. In diesem Tutorial wurden verschiedene Möglichkeiten vorgestellt, wie Oracle Linux Automation Engine die Automatisierung von Routineaufgaben in Oracle Linux ermöglicht, darunter das Installieren von Packages, das Erstellen, Aktualisieren und Löschen von Dateien und Verzeichnissen sowie das Hinzufügen von Benutzeraccounts zu Oracle Linux. Außerdem haben wir gezeigt, wie Sie mit dem Modul ansible.builtin.debug von Oracle Linux Automation Engine Informationen im Terminal anzeigen können, während Sie ein Playbook ausführen. Mit diesen Fähigkeiten haben Sie einen Vorsprung vorwärts zu wagen und Ihre Spielbücher zu schreiben.

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.