9c3f24776ca144d2ee8d81786d125d0c5f3853b4
- state machine : nouvelle étape enter_name après choose_agent
- XMPP JID suggéré par défaut : {nom}@xmpp.ovh (modifiable)
- MQTT inbox/service/install_path basés sur le nom libre
- notify_agent1 publie sur agents/register avec le bon format JSON
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Agent2_Deploy — Agent de déploiement
Agent spécialisé dans le déploiement d'autres agents sur des machines distantes ou locales. Interactif via XMPP, il guide l'utilisateur étape par étape pour déployer un agent via SSH, puis notifie agent1 du nouveau déploiement.
Rôle
- Déployer des agents spécialisés sur n'importe quelle machine via SSH
- Guider l'utilisateur interactivement (choix de l'agent, IP, credentials SSH, config XMPP/MQTT)
- Cloner automatiquement le dépôt git de l'agent cible
- Créer le service systemd sur la machine distante
- Notifier agent1 du nouveau déploiement (via MQTT)
Agents déployables
Définis dans agents_catalog.json :
| Agent | Description |
|---|---|
agent2_debian13 |
Spécialiste Debian (apt, systemd, docker...) |
agent2_ansible |
Automatisation Ansible (playbooks, ad-hoc...) |
agent2_deploy |
Agent de déploiement (ce même agent) |
Utilisation via XMPP
Contacter agent2_deploy@xmpp.ovh via XMPP :
!deploy # Démarrer un déploiement guidé
!agents # Lister les agents disponibles
!annuler # Annuler le déploiement en cours
!help # Aide
Déroulement du déploiement guidé
- Choix de l'agent à déployer
- Adresse IP de la machine cible
- Nom d'utilisateur SSH
- Authentification : mot de passe ou clé SSH
- JID XMPP pour l'instance déployée
- Mot de passe XMPP
- Adresse du broker MQTT
- Confirmation et déploiement
Utilisation en mode CLI (depuis git clone)
Cloner ce dépôt sur n'importe quelle machine et lancer le script :
# Déploiement SSH vers une machine distante
git clone https://git.piaf.im/sylvain/agent2_deploy.git
cd agent2_deploy
python3 deploy.py
# Installation locale (sur la machine cible elle-même)
python3 deploy.py --local agent2_debian13
python3 deploy.py --local agent2_ansible
Déploiement de agent2_deploy lui-même
Prérequis sur la machine hôte
apt-get install -y python3 python3-venv python3-paramiko git mosquitto
Installation manuelle
git clone https://git.piaf.im/sylvain/agent2_deploy.git /opt/agent2_deploy
cd /opt/agent2_deploy
# Configurer
nano config/config.json
# Service systemd
cat > /etc/systemd/system/agent2_deploy.service << 'EOF'
[Unit]
Description=Agent2 Deploy
After=network.target mosquitto.service agent.service
Wants=mosquitto.service
[Service]
Type=simple
WorkingDirectory=/opt/agent2_deploy
ExecStart=/usr/bin/python3 /opt/agent2_deploy/agent2_deploy.py
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable agent2_deploy
systemctl start agent2_deploy
Configuration (config/config.json)
{
"xmpp_jid" : "agent2_deploy@xmpp.ovh",
"xmpp_pass" : "<mot_de_passe>",
"admin_jid" : "sylvain@xmpp.ovh",
"mqtt_host" : "localhost",
"mqtt_port" : 1883,
"mqtt_client_id": "agent2_deploy",
"mqtt_inbox" : "agents/agent2_deploy/inbox",
"mqtt_outbox" : "agents/agent1/inbox",
"agent1_inbox" : "agents/agent1/inbox"
}
Prérequis sur les machines cibles
La machine sur laquelle déployer doit être accessible via SSH. Le script installe automatiquement :
python3,python3-pip,python3-venv,git- Les dépendances Python de l'agent (via pip dans le venv)
L'utilisateur SSH doit avoir les droits sudo ou être root (pour systemd et apt).
Ajouter un nouvel agent au catalogue
Editer agents_catalog.json :
{
"agent2_monagent": {
"description" : "Description de l'agent",
"repo_url" : "https://git.piaf.im/sylvain/agent2_monagent.git",
"install_path" : "/opt/agent2_monagent",
"service_name" : "agent2_monagent",
"main_script" : "agent2_monagent.py",
"mqtt_inbox" : "agents/agent2_monagent/inbox",
"mqtt_outbox" : "agents/agent1/inbox",
"dependencies" : ["slixmpp", "paho-mqtt", "requests"]
}
}
Logs
journalctl -u agent2_deploy -f
Description
Languages
Python
100%