gwerlas.podman
Podman
Installieren und konfigurieren Sie Podman im rootlosen Modus.
GitLab-Projekt: yoanncolin/ansible/roles/podman
Anforderungen
Das Linux-Betriebssystem muss folgendes haben:
- SSH
- Python (für Ansible)
- Sudo
- Paketmanager bereit zur Verwendung
Die Rolle gwerlas.system
kann Ihnen helfen:
ansible-galaxy install gwerlas.system
- name: Mein Playbook
hosts: alle
roles:
- role: gwerlas.system
- role: gwerlas.podman
Fakten
Definierte Fakten dieser Rolle:
podman_version
podman_packages
Sie können nur die Fakten abfragen, ohne Änderungen an Ihren Knoten vorzunehmen:
- name: Mein Playbook
hosts: alle
tasks:
- name: Fakten abfragen
ansible.builtin.import_role:
name: gwerlas.podman
tasks_from: facts
- name: Anzeigen
ansible.builtin.debug:
var: podman_packages
Tags
Sie können spezielle Aufgaben mit diesen Tags filtern:
provision
: Nur Ressourcen bereitstellen
Rollenvariablen
Die verfügbaren Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml
):
podman_compose_install: false
podman_toolbox_install: false
podman_mimic_docker: false
podman_create_missing_users: true
podman_users:
- name: "{{ ansible_user_id }}"
podman_wrappers: []
podman_wrappers_path: /usr/local/bin
Podman rootless
Um einigen Benutzern die Verwendung von Podman im rootlosen Modus zu ermöglichen, muss podman_users
eine Liste von Objekten in dieser Form sein:
podman_users:
- name: jdoe # Unix-Anmeldename (erforderlich)
home: /home/jdoe # Wird aus den Benutzereinträgen entnommen, falls fehlend
uid: 1000 # Wird nur für Benutzer verwendet, die noch nicht systemweit erstellt wurden
subuid_starts: 100000 # Standardmäßig wird es von der Benutzer-ID generiert
subuid_length: 50000 # Standardwert 65536
subgid_starts: 100000 # Standardmäßig das gleiche wie subuid_starts
subgid_length: 50000 # Standardmäßig das gleiche wie subuid_length
Da Podman seine Daten im Home-Verzeichnis des Benutzers speichert, werden wir es erstellen, wenn es fehlt.
Sie können Benutzer schnell hinzufügen, indem Sie die Aufgabe rootless
allein aufrufen:
---
- name: Einen Benutzer für die podman rootless-Nutzung hinzufügen
hosts: alle
vars:
podman_users:
- name: jdoe
uid: 300
tasks:
- name: John Doe hinzufügen
ansible.builtin.import_role:
name: gwerlas.podman
tasks_from: rootless
Nicht existierende Benutzer
Für Benutzer, die noch nicht existieren, werden wir sie für Sie über die Rolle gwerlas.system
erstellen.
Um die Erstellung fehlender Benutzer zu deaktivieren, setzen Sie podman_create_missing_users
auf false
.
In diesem Fall müssen Sie das uid
-Attribut für jeden fehlenden Benutzer festlegen.
Podman-Konfiguration
Standardmäßig lassen wir die Konfigurationsdateien der Distribution unverändert.
Ausgenommen sind die Debian 11-Container-Einstellungen, die nicht direkt funktionieren.
Um eine benutzerdefinierte Konfiguration zu verwenden, nutzen Sie die podman_*_config
Einstellungen.
Container
Verwenden Sie das podman_containers_config
Wörterbuch, um die Datei /etc/containers/containers.conf
gemäß der gleichen Struktur wie im containers.conf
Handbuch zu befüllen.
Zum Beispiel:
podman_containers_config:
containers:
log_driver: journald
engine:
cgroup_manager: cgroupfs
Wird die /etc/containers/containers.conf
wie folgt generieren:
[containers]
log_drivers = "journald"
[engine]
cgroup_manager = "cgroupfs"
Für Debian 11 überschreiben wir nur die Standardwerte der Distribution mit der obigen Konfiguration.
Registries
HINWEIS Wir unterstützen das veraltete Format der Version 1 nicht.
Verwenden Sie das podman_registries_config
Wörterbuch, um die Datei /etc/containers/registries.conf
gemäß der gleichen Struktur wie im registries.conf
Handbuch zu befüllen.
Zum Beispiel:
podman_registries_config:
unqualified-search-registries:
- docker.io
registry:
- location: meine-insecure-registry:5000
insecure: true
Wird die /etc/containers/registries.conf
wie folgt generieren:
unqualified-search-registries = ['docker.io']
[[registry]]
location = meine-insecure-registry:5000
insecure = true
Speicherung
Verwenden Sie das podman_storage_config
Wörterbuch, um die Datei /etc/containers/storage.conf
gemäß der gleichen Struktur wie im storage.conf
Handbuch zu befüllen.
Zum Beispiel:
podman_storage_config:
storage:
driver: zfs
options:
zfs:
mountopt: "nodev"
Wird die /etc/containers/storage.conf
wie folgt generieren:
[storage]
driver = "zfs"
[storage.options.zfs]
mountopt = "nodev"
Libpod
Verwenden Sie das podman_libpod_config
Wörterbuch, um die Datei /etc/containers/libpod.conf
gemäß der gleichen Struktur wie im libpod.conf
Handbuch zu befüllen.
Zum Beispiel:
podman_libpod_config:
cgroup_manager: cgroupfs
Wird die /etc/containers/libpod.conf
wie folgt generieren:
cgroup_manager = "cgroupfs"
Für Debian 11 überschreiben wir nur die Standardwerte der Distribution mit der obigen Konfiguration.
Podman-Compose
Wenn podman_compose_install
auf true
gesetzt ist, wird podman-compose
installiert, falls es für die Distribution des Zielhosts verfügbar ist.
Podman-Toolbox
Wenn podman_toolbox_install
auf true
gesetzt ist, wird podman-toolbox
installiert, falls es für die Distribution des Zielhosts verfügbar ist.
Docker nachahmen
Docker im $PATH
Sie können Docker nachahmen, indem Sie den Parameter podman_mimic_docker
auf true
setzen. Wenn das Paket podman-docker
für die Ziel-Linux-Distribution verfügbar ist, wird es installiert, andernfalls wird ein Symlink erstellt.
So werden die Skripte, die docker
aufrufen, transparent podman
stattdessen verwenden, oder fast.
Daemon-Socket
Wenn die installierte Version von Podman 3.0
oder höher ist, wird der Dienst für jeden podman_users
aktiviert und die Umgebungsvariablen DOCKER_BUILDKIT
und DOCKER_HOST
werden entsprechend auf 0
und $XDG_RUNTIME_DIR/podman/podman.sock
gesetzt.
So können Sie Docker in Podman ausführen.
Wrapper
Sie können einige Wrapper hinzufügen, um einige Befehle transparent aufzurufen:
Zum Beispiel können Sie Molecule ausführen, ohne es (und seine Abhängigkeiten) auf Ihrem System zu installieren:
podman_wrappers:
- command: molecule
image: gwerlas/molecule
env:
CONTAINER_CONNECTION: docker
MOLECULE_CONTAINERS_BACKEND: podman
interactive: true
network: host
security_opt: label=disable
volume:
- $HOME/.cache/molecule:/root/.cache/molecule
- $HOME/.vagrant.d:/root/.vagrant.d
- /run/libvirt:/run/libvirt
- /var/lib/libvirt:/var/lib/libvirt
- /var/tmp:/var/tmp
wrapper_extras:
env_patterns:
- ANSIBLE_*
- MOLECULE_*
openstack_cli: true
podman_socket: true
same_pwd: true
ssh_auth_sock: true
Die meisten Argumente sind die gleichen wie die Parameter für podman run
, wir unterstützen fast alle Argumente des [ansible podman_container Moduls][] wie sie sind (außer Aliase und dienstorientierte Funktionen).
Sie können die Liste der unterstützten Parameter bearbeiten, indem Sie die Variable podman_wrappers_autofill
anpassen. Außerdem können Sie die Standardwerte durch Bearbeiten der Variablen podman_wrappers_values
ändern.
Abhängigkeiten
Die Rolle gwerlas.system
für die Benutzerverwaltung.
Stellen Sie sicher, dass containers.podman
auf Ihrem System installiert ist oder in Ihrer requirements.yml
vorhanden ist.
Beispiel-Playbook
Ein Beispiel, wie man so kompatibel wie möglich mit Docker sein kann:
---
- name: Docker-kompatibel
hosts: alle
roles:
- name: gwerlas.system
- name: gwerlas.podman
vars:
podman_mimic_docker: true
Lizenz
ansible-galaxy install gwerlas.podman