Files
factory/get_gitea_token.sh
T
arcodangeandClaude Opus 5 b92da95701 docs(adr) — stockage objet MinIO : qui déclare quoi, et qui détient quoi
Trois questions indépendantes, tranchées lors du branchement de Kadans sur
MinIO (2026-07-26) : qui déclare les buckets d'une app, qui détient les
identifiants capables de les créer, et comment l'app lit les siens.

La décision de fond est du fondateur : CHACUN SON PÉRIMÈTRE. Une application
déclare ses buckets depuis son propre dépôt ; `tools` fournit le serveur, un
module de standardisation et un compte de provisionnement — pas la liste. Une
première version faisait tout porter par l'infra partagée : à ce rythme, chaque
bucket de chaque app devenait une PR sur le dépôt commun.

L'ADR consigne aussi les trois identités et leurs portées (root / provisionneur
/ compte de service), pourquoi la lecture des identifiants est une propriété
inconditionnelle de la plateforme plutôt qu'une déclaration par app, et pourquoi
les octets ne transitent pas par l'API — avec les conséquences que ça impose
(endpoint public, CORS aux origines exactes, pas de basic-auth sur l'ingress S3).

Les alternatives écartées sont listées avec leur motif, dont deux que j'avais
moi-même proposées et qui étaient plus faibles.

Deux limites assumées y figurent : le provisionneur est un secret PARTAGÉ entre
rôles CI (sa compromission permet de créer des buckets, pas de lire des objets),
et les noms d'actions d'administration MinIO n'ont pas été éprouvés contre le
serveur au moment d'écrire.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01CoafGWmRVESaWX819USUUA
2026-07-26 10:19:48 +02:00

78 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Script pour générer un token Gitea et configurer Hermes
# Usage: ./get_gitea_token.sh
set -e
echo "🔑 Génération d'un token Gitea pour Hermes..."
# Créer l'inventaire
cat > ~/Work/Arcodange/factory/inventory.ini << 'EOF'
[gitea]
gitea.arcodange.lab ansible_host=192.168.1.202 ansible_user=git
[gitea:vars]
ansible_ssh_private_key_file=~/.ssh/id_rsa_arcodange
EOF
# Créer le playbook
cat > ~/Work/Arcodange/factory/get_token.yml << 'EOF'
- name: Générer un token Gitea pour Hermes
hosts: localhost
connection: local
gather_facts: true
vars:
gitea_user_name: arcodange
gitea_token_name: hermes-{{ ansible_date_time.iso8601 }}
gitea_token_scopes: "write:repository,write:user"
gitea_token_fact_name: gitea_api_token
gitea_base_url: "https://gitea.arcodange.lab"
tasks:
- name: Inclure le role gitea_token
include_role:
name: .claude/worktrees/focused-dirac-151213/ansible/arcodange/factory/roles/gitea_token
- name: Afficher le token généré
debug:
var: gitea_api_token
when: gitea_api_token is defined and gitea_api_token != 'deleted'
- name: Sauvegarder le token dans un fichier temporaire
copy:
content: "{{ gitea_api_token }}"
dest: /tmp/gitea_token.txt
when: gitea_api_token is defined and gitea_api_token != 'deleted'
EOF
# Exécuter le playbook
echo "📜 Exécution du playbook Ansible..."
cd ~/Work/Arcodange/factory
ansible-playbook -i inventory.ini get_token.yml
# Récupérer le token depuis le fichier temporaire
if [ -f /tmp/gitea_token.txt ]; then
TOKEN=$(cat /tmp/gitea_token.txt)
echo "✅ Token généré avec succès !"
# Configurer Hermes
echo "🛠 Configuration de Hermes..."
hermes config set gitea.token "$TOKEN"
hermes config set gitea.base_url "https://gitea.arcodange.lab"
hermes config set gitea.username "arcodange"
# Nettoyer
rm -f /tmp/gitea_token.txt
rm -f inventory.ini
rm -f get_token.yml
echo "✨ Configuration terminée !"
echo "Token stocké dans la configuration Hermes."
else
echo "⚠️ Impossible de récupérer le token. Vérifie que :"
echo " 1. Le serveur Gitea est accessible"
echo " 2. La clé SSH est configurée (~/.ssh/id_rsa_arcodange)"
echo " 3. L'utilisateur 'git' a les permissions nécessaires"
fi