mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-09 00:04:42 +02:00
Trois instances llama-server CPU manuelles (hors Ansible) tournaient sur gpu-01
sans servir : déjà orphelines de LiteLLM (alias absents de config.yaml, d'où le
bruit "Invalid model name"). Suppression complète :
gpu-01 (opérationnel, déjà fait) :
- systemctl disable --now + rm des units llama-server-{system,monitor,dev}
- ports firewall 1235/1236/1237 fermés
Repo :
- monitoring : scrape jobs (values.yaml) + alertes LlamaServer{System,Monitor}Down
(alerts-ai.yaml) retirés → plus de "target down"/alertes fantômes ; panneaux de
statut dashboard-infrastructure recyclés (system→llama-embed, monitor supprimé).
- docs admin/ + hermes-skills (souls funk-ai/brain, SKILL agent-delegation) mises à
jour : inventaire modèles, profils Hermès system/monitor sans backend (à repointer
sur qwen3-8b), litellm, ops, monitoring.
Les profils Hermès system/monitor existent toujours mais sans backend dédié.
Dashboards Grafana dashboard-ai (panneaux graphiques CPU) laissés tels quels
(cosmétique, séries vides, aucune alerte).
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
151 lines
5.5 KiB
Markdown
151 lines
5.5 KiB
Markdown
# Ansible — Commandes d'administration
|
|
|
|
Toutes les commandes se lancent depuis la racine du repo (`Funk-lab/`).
|
|
Le venv est dans `.venv/`, le `Makefile` fournit les raccourcis.
|
|
|
|
---
|
|
|
|
## Playbooks et rôles
|
|
|
|
Deux playbooks, un par machine (le `site.yml` les enchaîne).
|
|
Chaque rôle a un `README.md` détaillé dans `ansible/roles/<nom>/` (variables, caveats, gaps).
|
|
|
|
### `playbooks/storage-01.yml` — hosts `gateway` (15 rôles)
|
|
|
|
| Rôle | Tag | Ce qu'il gère |
|
|
|---|---|---|
|
|
| `hermes_user` | `hermes_user` | User `hermes` + clés SSH partagées entre hosts |
|
|
| `common` | `common` | Paquets de base, sécurité, NTP |
|
|
| `gateway` | `gateway` | nftables + NAT (routeur du LAN cluster) |
|
|
| `dnsmasq` | `dnsmasq` | DNS local `lab.local` + wildcard → Traefik |
|
|
| `nfs_server` | `nfs_server` | Exports NFS (modèles LLM, volumes k8s) |
|
|
| `qdrant` | `qdrant` | Base vectorielle (RAG) — `:6333` |
|
|
| `postgresql` | `postgresql` | PG 16 — bases hermes, litellm, n8n, openwebui, grafana |
|
|
| `minio` | `minio` | ⚠️ **Rôle vide** (placeholder) — service inactif, à implémenter ou retirer |
|
|
| `litellm` | `litellm` | Proxy LLM `:4000` + script `ask-agent` |
|
|
| `hermes_agent` | `hermes_agent` | Agent Hermes + skills + souls |
|
|
| `rag` | `rag` | Scripts `rag-ingest` / `rag-query` + docs RAG |
|
|
| `node_exporter` | `node_exporter` | Métriques Prometheus |
|
|
| `alertmanager_webhook` | `alertmanager_webhook` | Pont AlertManager → ask-agent `:9093` |
|
|
| `postfix_relay` | `postfix_relay` | SMTP sortant via Gmail (App Password) |
|
|
| `hermes_auto_improve` | `hermes_auto_improve` | Worker analyse doc + trigger server `:9095` (schedulé par n8n à 22h) |
|
|
|
|
### `playbooks/gpu-01.yml` — hosts `gpu_hosts` (6 rôles)
|
|
|
|
| Rôle | Tag | Ce qu'il gère |
|
|
|---|---|---|
|
|
| `hermes_user` | `hermes_user` | User `hermes` (clé partagée avec storage-01) |
|
|
| `common` | `common` | Paquets de base, sécurité, NTP |
|
|
| `rocm` | `rocm` | Stack GPU AMD (ROCm 7.x, `HSA_OVERRIDE_GFX_VERSION=10.3.0`) |
|
|
| `nfs_client` | `nfs_client` | Montage `/mnt/models` depuis storage-01 |
|
|
| `llama_server` | `llama_server` | llama-server **GPU `:1234`** + embed **CPU `:1238`** (nomic). Les ex-instances CPU `:1235`/`:1236`/`:1237` (dev/system/monitor) ont été supprimées le 2026-06-20 |
|
|
| `node_exporter` | `node_exporter` | Métriques Prometheus (+ rocm power) |
|
|
|
|
> ⚠️ Le rôle `lm_studio` existe encore dans `ansible/roles/` mais n'est référencé par **aucun** playbook (remplacé par `llama_server` en mai 2026). Candidat à la suppression.
|
|
|
|
### Caveat premier déploiement — `hermes_agent`
|
|
|
|
Sur un hôte vierge, il faut **deux runs consécutifs** : le premier installe le binaire (`curl | bash`), le second applique la config (conditionnelle à l'existence du binaire).
|
|
|
|
---
|
|
|
|
## Raccourcis Makefile
|
|
|
|
```bash
|
|
make ping # Vérifie que toutes les machines répondent
|
|
make check # Dry-run complet (simule sans appliquer)
|
|
make apply # Applique tous les playbooks (storage-01 + gpu-01)
|
|
make apply-storage # Applique uniquement storage-01
|
|
make apply-gpu # Applique uniquement gpu-01
|
|
make install # Installe ansible-core + collections Galaxy
|
|
make vault-encrypt # Chiffre group_vars/all/vault.yml
|
|
make vault-edit # Édite le vault (déchiffre → édite → rechiffre)
|
|
make vault-view # Affiche le contenu du vault déchiffré
|
|
```
|
|
|
|
---
|
|
|
|
## Commandes Ansible directes
|
|
|
|
### Cibler un rôle spécifique
|
|
```bash
|
|
cd ansible/
|
|
# Via tag (si les rôles ont des tags)
|
|
../.venv/bin/ansible-playbook playbooks/storage-01.yml --tags dnsmasq
|
|
|
|
# Via limite d'hôte
|
|
../.venv/bin/ansible-playbook playbooks/site.yml -l gpu-01
|
|
```
|
|
|
|
### Exécuter une commande ad-hoc sur une machine
|
|
```bash
|
|
cd ansible/
|
|
../.venv/bin/ansible storage-01 -m shell -a "systemctl status dnsmasq"
|
|
../.venv/bin/ansible all -m shell -a "uptime"
|
|
../.venv/bin/ansible gpu_hosts -m shell -a "free -h"
|
|
```
|
|
|
|
### Collecter les facts d'une machine (variables système détectées)
|
|
```bash
|
|
cd ansible/
|
|
../.venv/bin/ansible storage-01 -m setup
|
|
../.venv/bin/ansible storage-01 -m setup -a "filter=ansible_interfaces"
|
|
../.venv/bin/ansible storage-01 -m setup -a "filter=ansible_default_ipv4"
|
|
```
|
|
|
|
### Vérifier l'inventaire
|
|
```bash
|
|
cd ansible/
|
|
../.venv/bin/ansible-inventory --list # JSON complet
|
|
../.venv/bin/ansible-inventory --graph # Arbre des groupes/hôtes
|
|
```
|
|
|
|
### Dry-run avec diff (voir exactement ce qui changerait)
|
|
```bash
|
|
cd ansible/
|
|
../.venv/bin/ansible-playbook playbooks/storage-01.yml --check --diff
|
|
```
|
|
|
|
### Débugger une variable
|
|
```bash
|
|
cd ansible/
|
|
../.venv/bin/ansible storage-01 -m debug -a "var=lan_interface"
|
|
../.venv/bin/ansible storage-01 -m debug -a "var=hostvars['storage-01']"
|
|
```
|
|
|
|
### Augmenter la verbosité (debug complet)
|
|
```bash
|
|
cd ansible/
|
|
../.venv/bin/ansible-playbook playbooks/storage-01.yml -v # output étendu
|
|
../.venv/bin/ansible-playbook playbooks/storage-01.yml -vvv # connexions SSH incluses
|
|
```
|
|
|
|
---
|
|
|
|
## Vault Ansible
|
|
|
|
```bash
|
|
# Chiffrer un fichier
|
|
cd ansible/
|
|
../.venv/bin/ansible-vault encrypt group_vars/all/vault.yml
|
|
|
|
# Chiffrer une valeur à la volée (copier-coller dans vault.yml)
|
|
../.venv/bin/ansible-vault encrypt_string 'mon_mot_de_passe' --name 'vault_postgres_password'
|
|
|
|
# Déchiffrer temporairement pour voir
|
|
../.venv/bin/ansible-vault view group_vars/all/vault.yml
|
|
|
|
# Changer le mot de passe vault
|
|
../.venv/bin/ansible-vault rekey group_vars/all/vault.yml
|
|
```
|
|
|
|
---
|
|
|
|
## Groupes d'hôtes disponibles
|
|
|
|
| Groupe | Machines |
|
|
|---|---|
|
|
| `all` | storage-01, gpu-01 |
|
|
| `gateway` | storage-01 |
|
|
| `gpu_hosts` | gpu-01 |
|
|
| `almalinux` | storage-01, gpu-01 |
|