Hinweis:
- Dieses Tutorial steht in einer von Oracle bereitgestellten kostenlosen Übungsumgebung zur Verfügung.
- Er verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, Mandanten und Compartments. Ersetzen Sie diese Werte beim Durchführen Ihrer Übung durch spezifische Werte für Ihre Cloud-Umgebung.
Podman-Container mit Oracle Linux Automation Engine konfigurieren
Einführung
In diesem Tutorial erfahren Sie, wie Sie ein Playbook zur Installation von Podman erstellen und einen Oracle Linux-Container mit dem Konfigurationsverwaltungstool Oracle Linux Automation Engine ausführen.
Bevor Sie fortfahren: Wenn Sie mit der Ausführung von Playbooks nicht vertraut sind, lesen Sie unser Einführungstutorial Playbook mit Oracle Linux Automation Engine schreiben.
Wenn Playbooks ausgeführt werden, führt Oracle Linux Automation Engine die Aufgaben auf Rechnern aus, die der Anweisung hosts
im Playbook entsprechen. Diese Hosts werden in der Regel in einer inventory
-Datei definiert und können entweder remote oder lokal sein. In diesem Tutorial wird gezeigt, wie Sie ein Playbook lokal ausführen.
Ziele
In dieser Übung lernen Sie Folgendes:
- Playbooks lokal ausführen
- Collection zu einem Playbook hinzufügen
- Podman installieren
- Rufen Sie einen
oraclelinux:8
-Container ab, und führen Sie ihn aus
Voraussetzungen
- Ein Oracle Linux-System mit der folgenden Konfiguration:
- neueste Oracle Linux 8 (x86_64)
- Nicht-Root-Benutzer mit
sudo
-Berechtigungen - Oracle Linux Automation Engine installieren
Ablagen
Hinweis: Bei der Verwendung der kostenlosen Übungsumgebung finden Sie unter Oracle Linux Lab Basics für Verbindungen und weitere Verwendungsanweisungen.
Sammlungen sind ein Distributionsformat für Oracle Linux Automation Engine-Inhalte, die Playbooks, Rollen, Module und Plug-ins enthalten können. In diesem Tutorial wird die containers.podman
-Sammlung mit einer requirements.yml
-Datei installiert. Mit einer requirements.yml
-Datei können Sie Collections und/oder Rollen basierend auf den in der Datei definierten Schlüsseln installieren.
Anforderungsdatei erstellen
-
Wenn noch nicht geschehen, öffnen Sie ein Terminal und verbinden Sie es über SSH mit dem Ol-Server-System.
ssh oracle@<ip_address_of_ol-server>
-
Erstellen Sie ein Arbeitsverzeichnis.
mkdir -p ~/podman-project
-
Wechseln Sie in das Arbeitsverzeichnis.
cd ~/podman-project
-
Erstellen Sie die Datei
requirements.yml
mit Ihrem gewünschten Editor. Hier verwenden wirvi
.vi requirements.yml
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie den Schlüssel und den Namen aller im Playbook verwendeten Sammlungen hinzu.
Beispiel:
--- collections: - name: containers.podman
-
Nachdem Sie die Bearbeitung der Datei
requirements.yml
abgeschlossen haben, speichern und schließen Sie die Datei. Wenn Sievi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben.
Collections mit der Anforderungsdatei installieren
-
Rufen Sie die Sammlungen ab, und installieren Sie sie lokal.
ansible-galaxy collection install -r requirements.yml
Nachdem der Befehl erfolgreich ausgeführt wurde, ähneln die Ergebnisse den angezeigten Ergebnissen.
Beispielausgabe:
[oracle@ol-server podman-project]$ ansible-galaxy collection install -r requirements.yml Starting galaxy collection install process Process install dependency map Starting collection install process Downloading https://galaxy.ansible.com/download/containers-podman-1.10.1.tar.gz to /home/oracle/.ansible/tmp/ansible-local-519108lfh458k/tmpikc963ue/containers-podman-1.10.1-aqgw3x1r Installing 'containers.podman:1.10.1' to '/home/oracle/.ansible/collections/ansible_collections/containers/podman' containers.podman:1.10.1 was installed successfully
Playbook erstellen
Oracle Linux Automation Engine Playbooks bestehen aus Spielen aus Aufgaben, die Hosts zugeordnet sind. Diese Aufgaben führen hauptsächlich idempotente Module aus. Die Idempotenz erreicht das gleiche Ergebnis, unabhängig davon, ob das Playbook einmal oder mehrmals ausgeführt wird. Dieses Tutorial zeigt die Idempotenz, indem das Playbook in Phasen erstellt und zwischen den einzelnen Änderungen ausgeführt wird.
Podman installieren
Bevor Sie einen Podman-Container ausführen, müssen Sie die Podman-Packages installieren. Die Packages werden mit dem Modul container-tools:ol8
aus dem Oracle Linux-Repository ol8_appstream installiert.
Von einem Terminal auf dem Ol-Server-System:
-
Wechseln Sie in die oberste Ebene des Arbeitsverzeichnisses, wenn dieses Verzeichnis noch nicht vorhanden ist.
cd ~/podman-project
-
Erstellen Sie die Playbook-Datei.
vi podman-playbook.yml
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie der Playbook-Datei Folgendes hinzu.
Beispiel:
--- - hosts: localhost connection: local collections: - containers.podman tasks: - name: install podman ansible.builtin.dnf: name: '@container-tools:ol8' state: present become: yes
Ein Playbook und die Namen der Aufgaben zielen darauf ab, das Playbook selbst zu dokumentieren. Die nachfolgenden Informationen erläutern einige Punkte weiter.
hosts: localhost
: Weist die Aufgaben an, die für den localhost ausgeführt werden sollen.connection: local
: Stellt sicher, dass der Link lokal bleibt und nicht über SSH ausgeführt wird.collections
: Bietet eine Liste aller im Play verwendeten Sammlungen.become: yes
: Hebt die Aufgabe in diesem Playbook-Abschnitt auf, die standardmäßig mit der Berechtigungsudo
ausgeführt werden soll.
-
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben. -
Playbook ausführen
ansible-playbook podman-playbook.yml
Der Befehl sollte mit ähnlichen Ergebnissen wie die angezeigten erfolgreich ausgeführt werden.
Beispielausgabe:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Prüfen, ob das Podman-Package installiert ist
podman --version
Beispielausgabe:
[oracle@ol-server podman-project]$ podman --version podman version 4.2.0
Image abrufen
Nachdem Podman installiert wurde, können wir Images von unserer gewünschten Registry abrufen und lokal bereitstellen. In diesem Schritt wird das Oracle Linux-Image aus der Container-Registry GitHub abgerufen.
Weitere Informationen zu Oracle Linux Developer-Images finden Sie hier.
-
Bearbeiten Sie die Playbook-Datei.
vi podman-playbook.yml
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie die folgende Aufgabe am Ende der Playbook-Datei hinzu.
Stellen Sie sicher, dass Sie für Lesbarkeit eine leere Zeile zwischen den Aufgaben beibehalten, und befolgen Sie die YAML-Syntaxregeln und die Ausrichtung.
Beispiel:
- name: pull oraclelinux:8 from GitHub podman_image: name: ghcr.io/oracle/oraclelinux:8
-
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben. -
Playbook ausführen
ansible-playbook podman-playbook.yml
Der Befehl sollte mit ähnlichen Ergebnissen wie die angezeigten erfolgreich ausgeführt werden.
Beispielausgabe:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** ok: [localhost] TASK [pull oraclelinux:8 from GitHub] ****************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Prüfen Sie, ob Podman das Image abgerufen hat.
podman images
Beispielausgabe:
[oracle@ol-server podman-project]$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE ghcr.io/oracle/oraclelinux 8 97e22ab49eea 20 hours ago 254 MB
Container-Image ausführen
Anstatt nur ein Bild zu ziehen, können wir auch einen Container basierend auf einem Bild in einem Schritt abrufen und ausführen. In diesem Schritt wird das Oracle Linux NGINX-Entwicklerimage abgerufen und ausgeführt.
-
Bearbeiten Sie die Playbook-Datei.
vi podman-playbook.yml
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Fügen Sie die folgende Aufgabe am Ende der Playbook-Datei hinzu.
Stellen Sie sicher, dass Sie für Lesbarkeit eine leere Zeile zwischen den Aufgaben beibehalten, und befolgen Sie die YAML-Syntaxregeln und die Ausrichtung.
Beispiel:
- name: run image containers.podman.podman_container: name: my-ol8 image: ghcr.io/oracle/oraclelinux8-nginx:1.18 state: started detach: yes expose: - '80' - '443' publish: - '8080:80'
Die nachfolgenden Informationen erläutern einige Punkte weiter.
name
: Name des Containers.image
: Repository-Pfad (oder Imagename) und Tag zum Erstellen des Containers.state
: Prüft, ob ein ausgeführter Container mit dem Namen und der Konfiguration übereinstimmt. Podman erstellt und startet einen neuen Container, wenn keine Übereinstimmung gefunden wird.detach
: Führt den Container im getrennten Modus aus.expose
: Geben Sie einen Port oder einen Portbereich an.publish
: Veröffentlichen Sie den Port oder Portbereich eines Containers auf dem Host.
-
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben. -
Playbook ausführen
ansible-playbook podman-playbook.yml
Der Befehl sollte mit ähnlichen Ergebnissen wie die angezeigten erfolgreich ausgeführt werden.
Beispielausgabe:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** ok: [localhost] TASK [pull oraclelinux:8 from GitHub] ****************************************** ok: [localhost] TASK [run image] *************************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Prüfen Sie, ob der Container ausgeführt wird.
podman ps
Beispielausgabe:
[oracle@ol-server podman-project]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5f7a28cc4c6b ghcr.io/oracle/oraclelinux8-nginx:1.18 nginx -g daemon o... 18 minutes ago Up 18 minutes ago 0.0.0.0:8080->80/tcp my-ol8
Die Ausgabe zeigt, dass der Container 18 Minuten lang hochgefahren und gestartet wurde.
-
Stoppen Sie den Container.
Führen Sie mit
CONTAINER NAMES
aus der obigen Ausgabe Folgendes aus:podman stop <CONTAINER NAMES>
Beispielausgabe:
[oracle@ol-server podman-project]$ podman stop my-ol8 my-ol8 [oracle@ol-server podman-project]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Container-Image mit einem Volume ausführen
Podman erstellt Volumes, indem ein Bind-Mount einem lokalen Verzeichnis innerhalb des Containers zugeordnet wird. Wir demonstrieren dieses Feature, indem wir denselben NGINX-Container ausführen und eine benutzerdefinierte index.html-Seite für den NGINX-Standard ersetzen.
-
Bearbeiten Sie die Playbook-Datei.
vi podman-playbook.yml
-
Geben Sie den Einfügemodus
vi
ein, indem Siei
eingeben. -
Erstellen Sie das lokale Verzeichnis.
Wir können diesen Schritt effizient und manuell über die Befehlszeile ausführen, ihn aber automatisieren. Durch die Automatisierung dieses Schrittes wird sichergestellt, dass das Verzeichnis bei jeder Ausführung des Playbooks vorhanden ist.
Fügen Sie vor der Aufgabe
run image
diese Aufgaben hinzu, die ein Verzeichnis und die index.html-Datei erstellen.Stellen Sie sicher, dass Sie für Lesbarkeit eine leere Zeile zwischen den Aufgaben beibehalten, und befolgen Sie die YAML-Syntaxregeln und die Ausrichtung.
Beispiel:
- name: ensure dest directory exists ansible.builtin.file: path: "/home/oracle/nginx/" state: directory - name: create empty file ansible.builtin.file: path: "/home/oracle/nginx/index.html" state: touch mode: '0755' - name: create index.html ansible.builtin.copy: dest: "/home/oracle/nginx/index.html" content: | Hello! Welcome to Oracle Linux Containers.
-
Fügen Sie dann die folgende Option am Ende der Aufgabe
run image
hinzu.Beispiel:
volume: "/home/oracle/nginx:/usr/share/nginx/html:Z"
Mit der Option
volume
wird ein Bind-Mount zwischen dem Verzeichnissource:destination
erstellt. Die Option:Z
behandelt alle Probleme mit SELinux-Berechtigungen im Zusammenhang mit dem Bind-Mount. Podman schreibt den Inhalt des Volumes so um, dass er mit dem Label im Container übereinstimmt.Hier ist eine abgeschlossene Version des Playbooks zur Referenz.
-
Speichern und schließen Sie die Datei. Wenn Sie
vi
verwenden, können Sie dies tun, indem SieESC
,:wq!
undENTER
eingeben. -
Playbook ausführen
ansible-playbook podman-playbook.yml
Der Befehl sollte mit ähnlichen Ergebnissen wie die angezeigten erfolgreich ausgeführt werden.
Beispielausgabe:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [install podman] ********************************************************** ok: [localhost] TASK [pull oraclelinux:8 from GitHub] ****************************************** ok: [localhost] TASK [ensure dest directory exists] ******************************************** changed: [localhost] TASK [create empty file] ******************************************************* changed: [localhost] TASK [create index.html] ******************************************************* changed: [localhost] TASK [run image] *************************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=7 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Prüfen Sie, ob der Container ausgeführt wird.
podman ps
Beispielausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f74aa726d470 ghcr.io/oracle/oraclelinux8-nginx:1.18 nginx -g daemon o... 10 minutes ago Up 10 minutes ago 0.0.0.0:8080->80/tcp my-ol8
-
Prüfen Sie, ob die index.html-Datei vorhanden ist.
ls -l /home/oracle/nginx
Beispielausgabe:
[oracle@ol-server podman-project]$ ls -l /home/oracle/nginx/ total 4 -rwxr-xr-x. 1 oracle oracle 41 Nov 5 16:46 index.html
-
Prüfen Sie das Bind-Mount.
Verwenden Sie
curl
, um die index.html-Seite aus dem Container anzuzeigen.curl localhost:8080
Dabei ist 8080 die lokale Portzuordnung zu Port 80 im Container.
Beispielausgabe:
[oracle@ol-server podman-project]$ curl localhost:8080 Hello! Welcome to Oracle Linux Containers.
Übersicht
Die Ausgabe von curl
zeigt eine erfolgreiche Verbindung zum NGINX-Webserver, der im Podman-Container ausgeführt wird, den wir lokal mit Oracle Linux Automation Engine bereitstellen.
Weitere Informationen
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 auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Configure Podman Containers with Oracle Linux Automation Engine
F50071-04
November 2022
Copyright © 2021, Oracle and/or its affiliates.