Ansible Role: Forgejo avec Podman Rootless

Ce rôle Ansible déploie Forgejo (un fork de Gitea) en utilisant Podman en mode rootless pour une sécurité accrue.
Prérequis
- Ansible >= 2.14
- Collection
ansible.posix
- podman
- systemd
Variables du Rôle
Utilisateur et système
| Variable |
Défaut |
Description |
forgejo_user |
forgejo |
Nom de l'utilisateur système |
forgejo_group |
forgejo |
Groupe de l'utilisateur |
forgejo_uid |
|
UID de l'utilisateur |
forgejo_gid |
|
GID du groupe |
forgejo_home |
/home/forgejo |
Répertoire home |
forgejo_subuid_start |
10000 |
Début de la plage SetUID de l'utilisateur |
forgejo_subuid_range |
65536 |
Taille de la plage SetUID de l'utilisateur |
forgejo_subgid_start |
10000 |
Début de la plage SetGID du groupe |
forgejo_subgid_range |
65536 |
Taille de la plage SetGID du groupe |
Image et conteneur
| Variable |
Défaut |
Description |
forgejo_version |
13-rootless |
Version/tag de l'image |
forgejo_image |
codeberg.org/forgejo/forgejo:{{ forgejo_version }} |
Image complète |
forgejo_container_name |
forgejo |
Nom du conteneur |
Point de montage
| Variable |
Défaut |
Description |
forgejo_data_dir |
{{ forgejo_home }}/data |
Répertoire contenant les données |
forgejo_config_dir |
{{ forgejo_home }}/config |
Répertoire contenant les fichiers de configuration |
Réseau
| Variable |
Défaut |
Description |
forgejo_podman_network |
host |
Réseau utilisé par le conteneur |
forgejo_http_port |
3000 |
Port HTTP exposé |
forgejo_ssh_port |
2222 |
Port SSH exposé |
forgejo_bind_address |
0.0.0.0 |
Adresse d'écoute |
Ressources
| Variable |
Défaut |
Description |
forgejo_container_memory |
512m |
Limite mémoire |
forgejo_container_cpus |
1 |
Limite CPU |
Service
| Variable |
Défaut |
Description |
forgejo_service_enabled |
true |
Active le lancement du conteneur au démarrage |
Forgejo Configuration
L'ensemble de la configuration peut être définit sous la forme de variable d'environnement
Voir les documentations suivantes :
| Variable |
Défaut |
Description |
forgejo_env_config_custom |
{} |
Dictionnaire contenant les variables d'environnements de configuration définit par l'utilisateur. Écrase les clefs définies dans la variable forgejo_env_config_default |
forgejo_env_config_default |
Voir le contenu par défaut |
Dictionnaire contenant les variables d'environnements par défaut |
Exemple d'utilisation
Playbook simple
---
- name: Déployer Forgejo
hosts: git_servers
become: true
roles:
- role: forgejo
vars:
forgejo_domain: "git.example.com"
forgejo_root_url: "https://git.example.com/"
forgejo_http_port: 3000
forgejo_ssh_port: 2222
Inventaire exemple
[git_servers]
git01.example.com
[git_servers:vars]
ansible_user=deploy
ansible_become=true
Structure du déploiement
/home/forgejo/
├── .config/
│ ├── containers/
│ │ ├── storage.conf
│ │ └── registries.conf
│ └── systemd/user/
│ └── container-forgejo.service
├── .local/share/containers/
├── config/
└── data/
Gestion du service
Le service est géré via systemd utilisateur:
# Connexion en tant que forgejo
sudo machinectl -q shell forgejo@
# Vérifier le statut
systemctl --user status container-forgejo.service
# Redémarrer
systemctl --user restart container-forgejo.service
# Voir les logs
journalctl --user -u container-forgejo.service -f
# Ou via podman
sudo -u forgejo podman logs -f forgejo
Sauvegarde
Les données importantes sont dans:
{{ forgejo_data_dir }} - Données Git, LFS, attachments
{{ forgejo_config_dir }} - Configuration
Tags Ansible
forgejo - Toutes les tâches
forgejo-validate - Validation des prérequis
forgejo-user - Gestion utilisateur
forgejo-podman - Configuration Podman
forgejo-deploy - Déploiement conteneur
forgejo-systemd - Configuration service
# Exemple: seulement reconfigurer
ansible-playbook site.yml --tags deploy
Dépannage
Le conteneur ne démarre pas
# Connexion en tant que forgejo
sudo machinectl -q shell forgejo@
# Vérifier les logs
podman logs forgejo
# Vérifier la configuration
podman inspect forgejo
Problèmes de permissions
# Vérifier les subuid/subgid
grep forgejo /etc/subuid /etc/subgid
# Réinitialiser le stockage si nécessaire
sudo -u forgejo podman system reset
Lingering non actif
# Activer manuellement
sudo loginctl enable-linger forgejo
Licence
GPL-3.0-or-later
Auteur
Hutaeh - HUTIT