Funk-lab/ansible/roles/hermes_user/README.md
Alkatrazz 0aa4c3650d docs(ansible): README par rôle (19) + gaps IaC découverts à l'audit
Audit complet des rôles vs état réel du cluster. Chaque rôle a maintenant
un README.md : but, variables (défauts + surcharges host_vars/vault),
handlers, vérifications, caveats.

Gaps découverts et documentés :
- minio : rôle VIDE (tasks/main.yml sans aucune tâche), service inactif —
  placeholder à implémenter ou retirer (ports 9000/9001 ouverts pour rien)
- llama_server : ne gère que l'instance GPU :1234 — les services CPU
  llama-server-system :1236 et llama-server-monitor :1237 sont créés à la
  main sur gpu-01, non reproductibles par make apply-gpu (+ un
  llama-server-dev.service non documenté présent sur l'hôte)
- hermes_auto_improve : defaults port/repo/branch/log non consommés
  (valeurs en dur dans les scripts), défaut branch obsolète
- lm_studio : README de dépréciation, candidat suppression

Tables admin/ops/ansible.md, README.md et CLAUDE.md corrigées en conséquence.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 15:21:24 +02:00

29 lines
1.2 KiB
Markdown

# hermes_user
Crée le user `hermes` (uid/gid 1002) sur **les deux hôtes** avec SSH partagé : la clé générée sur storage-01 est autorisée sur gpu-01, ce qui permet à l'agent de lancer des commandes read-only sur le nœud GPU.
## Ce que fait le rôle
- User/groupe `hermes` (1002:1002, home `/opt/hermes`)
- Sudo **limité** (listes blanches différentes storage-01 / gpu-01)
- Génération clé ed25519 sur storage-01 → poussée dans `authorized_keys` de gpu-01
- `~/.ssh/config` + known_hosts pré-remplis (gpu-01)
- Copie du kubeconfig dans `~hermes/.kube/` si présent (accès kubectl read-only)
- Ajout au groupe `systemd-journal`
## Variables principales
| Variable | Défaut |
|---|---|
| `hermes_user` / `hermes_group` | `hermes` |
| `hermes_uid` / `hermes_gid` | 1002 |
| `hermes_home` | `/opt/hermes` |
| `hermes_ssh_key_type` | ed25519 |
## Ordre d'exécution
Doit passer **avant** `hermes_agent` (qui suppose le user existant). C'est le premier rôle des deux playbooks.
## Caveat
Le rôle touche les deux machines mais avec des branches conditionnelles (`inventory_hostname`) — un run sur storage-01 seul ne pousse pas la clé sur gpu-01 : lancer les **deux** playbooks après régénération de clé.