# 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) | ## Commandes de contrôle (via agent1) | Commande XMPP (à agent1) | Effet sur cet agent | |---|---| | `!agentOFF agent2_deploy` | Pause — les `!deploy` sont refusés | | `!agentON agent2_deploy` | Reprise des déploiements | | `!agentsOFF` | Pause (avec tous les autres agents) | | `!agentsON` | Reprise (avec tous les autres agents) | --- ## 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é 1. Choix de l'agent à déployer 2. Adresse IP de la machine cible 3. Nom d'utilisateur SSH 4. Authentification : mot de passe ou clé SSH 5. JID XMPP pour l'instance déployée 6. Mot de passe XMPP 7. Adresse du broker MQTT 8. 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 : ```bash # 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 ```bash apt-get install -y python3 python3-venv python3-paramiko git mosquitto ``` ### Installation manuelle ```bash 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`) ```json { "xmpp_jid" : "agent2_deploy@xmpp.ovh", "xmpp_pass" : "", "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` : ```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 ```bash journalctl -u agent2_deploy -f ```