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.
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:
- Schreibe Bücher, die:
- Benutzer erstellen
- fügt den Benutzer zur sudo-Gruppe hinzu
- Kopiert einen lokalen SSH-Public Key in die Datei authorized_keys des Benutzers
- Fügt ein DNF-Repository hinzu und installiert ein Package
- Dateien bearbeiten
Voraussetzungen
-
Mindestens zwei Oracle Linux-Systeme mit der folgenden Konfiguration:
- einem 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
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.
-
Ö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 Collections.
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" olam_type: olae EOF
-
Bestandsdatei erstellen
cat << EOF | tee hosts > /dev/null localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6 EOF
-
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.
-
Öffnen Sie ein neues Terminal und verbinden Sie sich über SSH mit dem ol-control-node-System.
ssh oracle@<ip_address_of_instance>
-
Prüfen Sie, ob der Oracle Linux Automation Engine-Befehl verfügbar ist.
ansible --version
-
Erstellen Sie ein Arbeitsprojektverzeichnis.
mkdir -p ~/ol-playbook
-
Erstellen Sie ein Variablenverzeichnis und eine Datei für das Projekt.
mkdir ~/ol-playbook/vars
touch ~/ol-playbook/vars/defaults.yml
-
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 Benutzernameoracle
.user_default_password
: Das Standardkennwort für den Benutzeroracle
, wenn es erstellt wird. Das Kennwort ist erforderlich, wenn Siesudo
-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 Keyid_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 wiecontainer-tools
installieren, sieht das Array wie['git',' @container-tools:ol8']
aus.
-
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 Berechtigungsudo
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.
-
Erstellen Sie eine Anforderungsdatei.
cat << 'EOF' | tee ~/ol-playbook/requirements.yml > /dev/null --- collections: - name: ansible.posix - name: community.crypto EOF
-
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üransible
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.
-
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>
-
Erstellen Sie eine neue Bestandsdatei im Projektverzeichnis.
cat << EOF | tee ~/ol-playbook/inventory > /dev/null [production] ol-host ansible_host=$REMOTE EOF
-
Wechseln Sie in das Projektarbeitsverzeichnis.
cd ~/ol-playbook
-
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 Benutzeropc
, den Standardbenutzer, der auf Oracle Linux-Instanzen in Oracle Cloud Infrastructure (OCI) bereitgestellt wird. Genehmigen Sie den ECDSA-Schlüssel-Fingerprint, indem Sieyes
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" }
-
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.
-
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>
-
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
-
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.
-
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 mitdnf
installiert wird.enablerepo
: Aktiviert das spezifische Repository (falls deaktiviert) nur für die Dauer der aktuellen Aufgabe.
-
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.
-
Prüfen Sie die Installation des Repositorys und des Packages.
ssh oracle@$REMOTE which htop
-
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. -
Beenden Sie das Programm htop, indem Sie
q
eingeben.
Dateien und Verzeichnisse hinzufügen, aktualisieren und löschen
-
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 Berechtigungbecome:
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.
-
Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.
ansible-playbook -i inventory setup.yml -u opc
-
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.
-
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 jedeitem
aus dem Parameterwith_items
.with_items:
: Dieser Parameter gibt die Liste vonitems
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.
-
Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.
ansible-playbook -i inventory setup.yml -u opc
-
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.
-
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.
-
-
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.
-
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
-
Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.
ansible-playbook -i inventory setup.yml -u opc
-
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.
-
Bestätigen Sie die Erstellung der neuen Datei und das Hinzufügen unserer Inhalte.
ssh oracle@$REMOTE cat example/testing.txt
-
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.
-
Führen Sie das Playbook aus, um die zusätzlichen Aufgaben auszuführen.
ansible-playbook -i inventory setup.yml -u opc
-
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.
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.
Run Oracle Linux Tasks with Oracle Linux Automation Engine
F49865-06
Copyright ©2021, Oracle and/or its affiliates.