Files
agent_ansible/README.md
T
2026-03-09 17:47:54 +00:00

90 lines
2.5 KiB
Markdown

# 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"
```