D11.3 containers.podman Collection 📦
Παράλληλο με community.docker
community.docker containers.podman
───────────────────── ─────────────────────
docker_container ↔ podman_container
docker_image ↔ podman_image
docker_network ↔ podman_network
docker_volume ↔ podman_volume
docker_login ↔ podman_login
podman_container — Βασική χρήση
tasks:
# ── Rootless container (ως ansible user) ──
- name: "🦭 Nginx (rootless)"
containers.podman.podman_container:
name: nginx
image: "nginx:1.25-alpine"
state: started
restart_policy: always
ports:
- "8080:80" # ← rootless: μόνο ports > 1024
volumes:
- "/home/ansible/html:/usr/share/nginx/html:ro,z"
# ↑ z = SELinux label
become: false # ← τρέχει ΩΣ ansible user!
become_user: "{{ podman_user | default('ansible') }}"
# ── rootful container (ως root) ──────────
- name: "🦭 Nginx (rootful)"
containers.podman.podman_container:
name: nginx_root
image: "nginx:1.25-alpine"
state: started
restart_policy: always
ports:
- "80:80" # ← rootful: οποιοδήποτε port
become: true
# ── Image management ──────────────────────
- name: "📥 Pull image"
containers.podman.podman_image:
name: "nginx:1.25-alpine"
state: present
become: false
# ── Network ───────────────────────────────
- name: "🌐 Custom network"
containers.podman.podman_network:
name: myapp_net
state: present
internal: false
become: false
# ── Volume ────────────────────────────────
- name: "💾 Named volume"
containers.podman.podman_volume:
name: app_data
state: present
become: false
# ── Container με volume + network ────────
- name: "🚀 App container (rootless)"
containers.podman.podman_container:
name: myapp
image: "myapp:{{ app_version }}"
state: started
restart_policy: always
network:
- name: myapp_net
volume:
- "app_data:/app/data:Z" # ← Z = shared SELinux label
env:
NODE_ENV: production
security_opt:
- "no-new-privileges:true"
become: false
Login σε registry
tasks:
- name: Login σε private registry
containers.podman.podman_login:
registry: registry.example.com
username: "{{ registry_user }}"
password: "{{ vault_registry_pass }}"
become: false
no_log: true
Σύνοψη D11.3
containers.podman modules
│
├── podman_container → ίδιο με docker_container
├── podman_image → pull/build images
├── podman_network → CNI networks
├── podman_volume → named volumes
└── Key difference:
├── become: false → rootless (preferred!)
└── SELinux: :z (shared) ή :Z (private) labels