No description
- Jinja 100%
| defaults | ||
| handlers | ||
| meta | ||
| tasks | ||
| templates | ||
| tests | ||
| vars | ||
| LICENCE.md | ||
| README.md | ||
Rôle Ansible : Podman
Installation et configuration de Podman pour le déploiement de conteneurs rootless.
Responsabilités
Ce rôle s'occupe uniquement de la configuration système :
✅ Installation de Podman et dépendances ✅ Configuration des registries ✅ Configuration du storage driver ✅ Support rootless (subuid/subgid) ✅ Support IPv6 (si activé)
Ce que le rôle NE fait PAS
❌ Création d'utilisateurs (fait par les rôles applicatifs) ❌ Création de réseaux (fait par les rôles applicatifs) ❌ Déploiement de conteneurs (fait par les rôles applicatifs)
Prérequis
- Debian 12+ ou Ubuntu 22.04+
- Ansible 2.14+
- Collection
ansible.posix
ansible-galaxy collection install ansible.posix
Variables
Configuration de base
# Support IPv6 (default: true)
podman_enable_ipv6: true
# Storage driver (default: overlay)
podman_storage_driver: "overlay"
Registries
# Registries autorisées
podman_registries:
- "docker.io"
- "quay.io"
- "ghcr.io"
# Registries pour les images non qualifiées
podman_unqualified_search_registries:
- "docker.io"
# Registries bloquées (optionnel)
podman_blocked_registries:
- "badregistry.com"
Packages
podman_packages:
- podman
- podman-compose
- slirp4netns
- fuse-overlayfs
- uidmap
Configuration rootless
podman_max_user_namespaces: 28633
podman_subuid_range: 100000
podman_subuid_count: 65536
podman_subgid_range: 100000
podman_subgid_count: 65536
Utilisation
Playbook simple
- hosts: containers
become: true
roles:
- podman
Avec rôles applicatifs
- hosts: traefik
become: true
roles:
- podman # Installe et configure Podman
- traefik # Déploie Traefik (crée user, réseau, conteneur)
- hosts: forgejo
become: true
roles:
- podman # Installe et configure Podman
- forgejo # Déploie Forgejo (crée user, réseau, conteneur)
Avec variables personnalisées
- hosts: containers
become: true
vars:
podman_enable_ipv6: true
podman_storage_driver: "overlay"
podman_registries:
- "docker.io"
- "registry.gitlab.com"
- "ghcr.io"
roles:
- podman
Vérification post-installation
# Version Podman
podman --version
# Info système
podman info
# Storage driver
podman info | grep -i "graphDriverName"
# Registries configurées
cat /etc/containers/registries.conf
Tags disponibles
# Installation uniquement
ansible-playbook playbook.yml --tags "install"
# Configuration registries uniquement
ansible-playbook playbook.yml --tags "registries"
# Configuration IPv6 uniquement
ansible-playbook playbook.yml --tags "ipv6"
# Vérifications uniquement
ansible-playbook playbook.yml --tags "verify"
Structure du rôle
roles/podman/
├── defaults/
│ └── main.yml # Variables par défaut
├── tasks/
│ └── main.yml # Tâches principales
├── templates/
│ ├── registries.conf.j2 # Configuration registries
│ └── storage.conf.j2 # Configuration storage
├── meta/
│ └── main.yml # Métadonnées
└── README.md
Exemples d'intégration
Avec Traefik
# group_vars/traefik.yml
podman_enable_ipv6: true
podman_registries:
- "docker.io"
# playbook.yml
- hosts: traefik
roles:
- podman
- traefik # Crée l'utilisateur "traefik" et déploie
Avec Forgejo
# group_vars/forgejo.yml
podman_enable_ipv6: true
podman_registries:
- "docker.io"
- "codeberg.org"
# playbook.yml
- hosts: forgejo
roles:
- podman
- forgejo # Crée l'utilisateur "forgejo" et déploie
Dépannage
Erreur : "cannot clone: Operation not permitted"
Vérifier les user namespaces :
sysctl kernel.unprivileged_userns_clone
# Doit retourner: kernel.unprivileged_userns_clone = 1
Erreur : "no such file or directory: /etc/subuid"
Le rôle crée automatiquement ces fichiers, mais vérifier :
ls -la /etc/subuid /etc/subgid
IPv6 ne fonctionne pas
Vérifier le forwarding :
sysctl net.ipv6.conf.all.forwarding
# Doit retourner: net.ipv6.conf.all.forwarding = 1
Licence
GPLv3 or later
Auteur
HuTaeh - HUTIT