From bb4b26a5785f4a4bfa548f611fe5ab1fae9acde3 Mon Sep 17 00:00:00 2001 From: Rene Mewissen Date: Fri, 7 Nov 2025 08:53:12 +0100 Subject: [PATCH] podman rebuilt --- roles/podman/README.md | 4 +- roles/podman/tasks/main.yml | 37 +++++++++---------- .../podman/templates/portainer-compose.yml.j2 | 17 +++++++++ 3 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 roles/podman/templates/portainer-compose.yml.j2 diff --git a/roles/podman/README.md b/roles/podman/README.md index c8c225a..1d62b3c 100644 --- a/roles/podman/README.md +++ b/roles/podman/README.md @@ -1,11 +1,13 @@ # Ansible Role: podman -Diese Rolle installiert Podman und Portainer auf Debian-basierten Systemen. +Diese Rolle installiert Podman und startet Portainer mithilfe von `podman-compose` auf Debian-basierten Systemen. Zusätzlich wird ein NFS-Share von einem TrueNAS-System gemountet, um persistente Daten für Podman-Container, einschließlich Portainer, zu speichern. ## Anforderungen Diese Rolle wurde für Debian-basierte Systeme entwickelt und getestet. +Sie erfordert `pip`, um `podman-compose` zu installieren. Stellen Sie sicher, dass `python3-pip` auf dem Zielsystem vorhanden ist. + Es wird davon ausgegangen, dass ein NFS-Share auf einem TrueNAS-System bereits konfiguriert und exportiert ist. ## Rollenvariablen diff --git a/roles/podman/tasks/main.yml b/roles/podman/tasks/main.yml index 529d516..813fdcc 100644 --- a/roles/podman/tasks/main.yml +++ b/roles/podman/tasks/main.yml @@ -41,27 +41,24 @@ # Dies stellt sicher, dass der Podman-Socket für die Kommunikation verfügbar ist, # insbesondere für Tools wie Portainer, die sich mit dem Socket verbinden. -- name: Create Portainer data directory on NFS share +- name: Install podman-compose + ansible.builtin.pip: + name: podman-compose + state: present + +- name: Create directory for Portainer compose file ansible.builtin.file: - path: "{{ portainer_data_path }}" + path: "{{ podman_data_mount_point }}/compose/portainer" state: directory mode: '0755' - owner: root - group: root -- name: Run Portainer container with Podman (using podman_container module) - community.general.podman_container: - name: "{{ portainer_name }}" - image: "{{ portainer_image }}" - state: started - restart_policy: always - ports: - - "{{ portainer_edge_agent_port }}:8000" - - "{{ portainer_web_port }}:9443" - - "{{ portainer_legacy_port }}:9000" - volume: - # Map Podman socket to Docker socket path for Portainer compatibility - - "/run/podman/podman.sock:/var/run/docker.sock" - - "{{ portainer_data_path }}:/data" - # This module is idempotent by nature and provides better state management. - # Ensure 'community.general' collection is installed with `ansible-galaxy collection install community.general`. \ No newline at end of file +- name: Create Portainer compose file from template + ansible.builtin.template: + src: portainer-compose.yml.j2 + dest: "{{ podman_data_mount_point }}/compose/portainer/compose.yml" + mode: '0644' + +- name: Start Portainer container using podman-compose + ansible.builtin.command: + cmd: podman-compose up -d + chdir: "{{ podman_data_mount_point }}/compose/portainer" \ No newline at end of file diff --git a/roles/podman/templates/portainer-compose.yml.j2 b/roles/podman/templates/portainer-compose.yml.j2 new file mode 100644 index 0000000..f680621 --- /dev/null +++ b/roles/podman/templates/portainer-compose.yml.j2 @@ -0,0 +1,17 @@ +--- +version: '3.8' + +services: + portainer: + image: "{{ portainer_image }}" + container_name: "{{ portainer_name }}" + ports: + - "{{ portainer_edge_agent_port }}:8000" + - "{{ portainer_legacy_port }}:9000" + - "{{ portainer_web_port }}:9443" + volumes: + - "podman.sock:/var/run/docker.sock" + - "{{ portainer_data_path }}:/data" + - "{{ portainer_data_path }}"/logs:/logs + - "{{ portainer_data_path }}"/certs:/certs + restart: always \ No newline at end of file