diff --git a/README.md b/README.md new file mode 100644 index 0000000..4661864 --- /dev/null +++ b/README.md @@ -0,0 +1,89 @@ +# agent_ansible + +Agent d'automatisation d'infrastructure via Ansible. Exécute des playbooks, lance des commandes ad-hoc sur un parc de serveurs, gère l'inventaire, les rôles Galaxy et les secrets Vault. + +## Rôle + +Cet agent est fait pour automatiser des tâches **sur plusieurs serveurs distants** via Ansible. Pour une tâche sur le serveur local uniquement, utiliser `agent_debian`. + +## Installation + +```bash +cd /opt/agent_ansible +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +# Ansible doit être installé sur le système +apt install ansible +systemctl enable --now agent_ansible +``` + +## Skills disponibles + +| Skill | Description | +|-------|-------------| +| `playbook` | Exécute un playbook Ansible (`ansible-playbook`) | +| `adhoc` | Commandes ad-hoc sur un groupe d'hôtes (`ansible -m`) | +| `inventory` | Gestion de l'inventaire (list, add, remove, ping) | +| `galaxy` | Installation de rôles et collections (`ansible-galaxy`) | +| `vault` | Chiffrement/déchiffrement de secrets (`ansible-vault`) | +| `shell` | Commandes shell locales (utile pour diagnostics) | +| `agents_status` | Statut des agents du système | +| `mqtt_send` | Publication sur un topic MQTT | +| `mqtt_subscribe` | Souscription dynamique à un topic MQTT | +| `muc_send` | Message dans le groupe XMPP | + +## Structure + +``` +agent_ansible.py — Point d'entrée +skills/ — 10 skills Ansible +config/ — Configuration et system prompt +playbooks/ — Playbooks Ansible +inventory/ + hosts — Inventaire des hôtes +ansible.cfg — Configuration Ansible +agent_ansible.service — Unit systemd +``` + +## Configuration + +`config/config.json` : +```json +{ + "agent_id": "ansible.main", + "xmpp": { + "jid": "ansible.main@xmpp.ovh", + "password": "...", + "admin_jid": "sylvain@xmpp.ovh", + "muc_room": "agents@muc.xmpp.ovh" + }, + "mqtt": { "host": "localhost", "port": 1883 }, + "llm": { + "base_url": "http://192.168.7.119:11434", + "model": "ministral-3:latest", + "temperature": 0.3 + }, + "llm_profiles": { + "local": "ministral-3:latest", + "cloud": "gpt-oss:120b-cloud" + } +} +``` + +## Commandes + +``` +/report — Rapport (stats tâches + version Ansible) +/update — Git pull + redémarrage du service +/status — État de la queue de tâches +``` + +## Exemples de tâches (via Nexus) + +``` +"Lance le playbook site.yml sur le groupe webservers" +"Fais un apt upgrade sur tous les serveurs de prod" +"Ping tous les hôtes de l'inventaire" +"Installe le rôle geerlingguy.nginx depuis Galaxy" +```