gwerlas.podman

Podman

Pipeline-Status

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

BSD 3-Klausel-Lizenz.

Über das Projekt

Install and configure podman

Installieren
ansible-galaxy install gwerlas.podman
GitHub Repository
Lizenz
bsd-3-clause
Downloads
5.4k
Besitzer
DevOps Engineer