Déployer l'agent Onagre avec Ansible
Présentation
Pour les équipes gérant des parcs de serveurs, Ansible offre un moyen reproductible et idempotent de déployer l'agent Onagre sur l'ensemble de votre infrastructure. Cette page fournit un playbook et une structure de rôle prêts à l'emploi.
Prérequis
- Ansible 2.9+ installé sur votre noeud de contrôle
- Hôtes cibles exécutant une distribution Linux basée sur systemd (Debian, Ubuntu, RHEL, etc.)
- Accès SSH avec des privilèges root ou sudo sur les hôtes cibles
- Votre token d'agent Onagre (disponible depuis l'interface Onagre)
Configuration de l'inventaire
Définissez vos hôtes cibles dans votre inventaire. Vous pouvez les regrouper par rôle ou environnement :
[onagre_agents]
web-01 ansible_host=192.168.1.10
web-02 ansible_host=192.168.1.11
db-01 ansible_host=192.168.1.20
[onagre_agents:vars]
onagre_token=YOUR_TOKEN_HERE
💡 Tip
Utilisez
ansible-vaultpour chiffrer votre token plutôt que de le stocker en clair :ansible-vault encrypt_string 'YOUR_TOKEN_HERE' --name 'onagre_token'
Playbook
---
- name: Deploy Onagre Agent
hosts: onagre_agents
become: true
vars:
onagre_agent_version: "latest"
onagre_agent_name: "default"
onagre_agent_binary: "/usr/local/bin/onagent@{{ onagre_agent_name }}"
onagre_agent_service: "onagent@{{ onagre_agent_name }}"
onagre_base_url: "https://d.onag.re"
tasks:
- name: Determine architecture
ansible.builtin.set_fact:
onagre_arch: >-
{%- if ansible_architecture == 'x86_64' -%}linux-x64
{%- elif ansible_architecture == 'aarch64' -%}linux-arm64
{%- elif ansible_architecture in ['armv7l', 'armhf'] -%}linux-arm
{%- else -%}linux-x64
{%- endif -%}
- name: Download Onagre Agent binary
ansible.builtin.get_url:
url: "{{ onagre_base_url }}/agent-{{ onagre_arch }}"
dest: "{{ onagre_agent_binary }}"
mode: "0755"
force: true
notify: Restart Onagre Agent
- name: Create systemd service file
ansible.builtin.template:
src: onagent.service.j2
dest: "/etc/systemd/system/{{ onagre_agent_service }}.service"
mode: "0644"
notify:
- Reload systemd
- Restart Onagre Agent
- name: Enable and start Onagre Agent
ansible.builtin.systemd:
name: "{{ onagre_agent_service }}"
enabled: true
state: started
handlers:
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: true
- name: Restart Onagre Agent
ansible.builtin.systemd:
name: "{{ onagre_agent_service }}"
state: restarted
Template de service
Créez le template Jinja2 référencé par le playbook :
[Unit]
Description=Onagre Agent ({{ onagre_agent_name }})
After=network.target
[Service]
LimitNOFILE=65535
Environment=TOKEN={{ onagre_token }}
ExecStart={{ onagre_agent_binary }}
RestartSec=5
Restart=always
User=root
[Install]
WantedBy=multi-user.target
Structure des répertoires
ansible/
├── inventory/
│ └── hosts.ini
├── playbooks/
│ └── deploy-onagre-agent.yml
└── templates/
└── onagent.service.j2
Exécution du playbook
Déployer sur tous les hôtes :
ansible-playbook -i inventory/hosts.ini playbooks/deploy-onagre-agent.yml
Déployer sur un hôte spécifique :
ansible-playbook -i inventory/hosts.ini playbooks/deploy-onagre-agent.yml --limit web-01
Avec un token chiffré par vault :
ansible-playbook -i inventory/hosts.ini playbooks/deploy-onagre-agent.yml --ask-vault-pass
Mise à jour des agents
Relancez le même playbook — il téléchargera le dernier binaire et redémarrera le service s'il a changé :
ansible-playbook -i inventory/hosts.ini playbooks/deploy-onagre-agent.yml
L'option force: true sur la tâche de téléchargement garantit que le binaire est toujours rafraîchi.
Désinstallation des agents
Pour supprimer les agents de votre parc, utilisez ce playbook :
---
- name: Uninstall Onagre Agent
hosts: onagre_agents
become: true
vars:
onagre_agent_name: "default"
onagre_agent_binary: "/usr/local/bin/onagent@{{ onagre_agent_name }}"
onagre_agent_service: "onagent@{{ onagre_agent_name }}"
tasks:
- name: Stop and disable Onagre Agent
ansible.builtin.systemd:
name: "{{ onagre_agent_service }}"
state: stopped
enabled: false
ignore_errors: true
- name: Remove service file
ansible.builtin.file:
path: "/etc/systemd/system/{{ onagre_agent_service }}.service"
state: absent
notify: Reload systemd
- name: Remove agent binary
ansible.builtin.file:
path: "{{ onagre_agent_binary }}"
state: absent
handlers:
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: true
Résumé
Utiliser Ansible pour déployer les agents Onagre offre une approche évolutive, reproductible et auditable, adaptée à la gestion d'agents sur une infrastructure de grande envergure. Le playbook gère la détection d'architecture, le déploiement du binaire, la gestion du service et les mises à jour en une seule exécution.
Pour les déploiements sur un seul serveur, envisagez le script d'installation ou l'installation manuelle.