accueil > Gestion des paquets et du système > ansible

ansible : Gestion et automatisation des serveurs distants

Ansible est un moteur d'automatisation open source qui effectue diverses tâches d'automatisation informatique, notamment le provisionnement de logiciels, la gestion de la configuration, le déploiement d'applications et l'orchestration. Il se connecte aux serveurs distants via SSH sans agent et exécute des tâches en utilisant des playbooks basés sur YAML pour définir les tâches.

Aperçu

Ansible fonctionne sans agent, ce qui signifie qu'aucun logiciel supplémentaire n'a besoin d'être installé sur les serveurs gérés. Il exécute des commandes via une connexion SSH et utilise des modules écrits en Python pour effectuer diverses tâches. Vous pouvez définir les hôtes gérés via un fichier d'inventaire et automatiser les tâches à l'aide de commandes ad-hoc ou de playbooks.

Caractéristiques principales

  • Fonctionnement sans agent (aucun agent requis sur les serveurs gérés)
  • Communication basée sur SSH (utilisation de l'infrastructure existante)
  • Utilisation de playbooks YAML (scripts d'automatisation concis et lisibles)
  • Gestion de la configuration, déploiement d'applications, orchestration et autres automatisations informatiques

Options principales

Les commandes Ansible sont utilisées pour exécuter des modules spécifiques ou effectuer des commandes ad-hoc sur des groupes d'hôtes définis dans le fichier d'inventaire.

Options d'exécution de base

Informations et débogage

Commande générée :

Essayez de combiner les commandes.

Description:

`ansible` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Vous pouvez effectuer diverses tâches sur les serveurs distants à l'aide des commandes Ansible.

Vérifier la connectivité de tous les hôtes (ping)

ansible all -m ping

Teste la connectivité avec tous les hôtes définis dans l'inventaire.

Exécuter une commande sur le groupe de serveurs web

ansible webservers -a "uptime"

Exécute la commande 'uptime' sur les hôtes du groupe 'webservers' dans l'inventaire.

Installer un paquet sur un hôte spécifique (avec sudo)

ansible node1 -b -m apt -a "name=nginx state=present"

Installe le paquet 'nginx' sur l'hôte node1. L'option -b est utilisée pour les privilèges sudo.

Utiliser un fichier d'inventaire personnalisé

ansible all -i my_inventory.ini -a "df -h"

Exécute la commande 'df -h' sur tous les hôtes en utilisant le fichier 'my_inventory.ini' au lieu du fichier d'inventaire par défaut.

Copier un fichier en spécifiant l'utilisateur distant

ansible webservers -u deploy_user -m copy -a "src=./index.html dest=/var/www/html/"

Copie le fichier local 'index.html' vers le répertoire '/var/www/html/' du serveur distant en se connectant en tant qu'utilisateur 'deploy_user'.

Installation

Ansible n'est généralement pas inclus par défaut dans la plupart des distributions Linux. Vous devez donc l'installer via un gestionnaire de paquets ou Python pip. L'installation via Python pip est la méthode la plus recommandée.

Installation avec Python pip (recommandé)

Si Python est installé, vous pouvez installer Ansible en utilisant pip.

  • Commande d'installation: pip install ansible
  • Commande de mise à niveau: pip install --upgrade ansible

Ubuntu/Debian

Installez en utilisant le gestionnaire de paquets APT.

  • Commande d'installation: sudo apt update && sudo apt install ansible

CentOS/RHEL

Installez en utilisant le gestionnaire de paquets YUM/DNF. Le dépôt EPEL peut être nécessaire.

  • Installation du dépôt EPEL: sudo yum install epel-release
  • Commande d'installation: sudo yum install ansible

Conseils et précautions

Conseils et points à considérer pour utiliser Ansible efficacement.

Conseils d'utilisation d'Ansible

  • **Gestion des fichiers d'inventaire** : Il est important de regrouper et de définir systématiquement les hôtes gérés. Vous pouvez utiliser les formats `ini` ou `yaml`.
  • **Utilisation recommandée des playbooks** : Pour des commandes ad-hoc simples, il est recommandé d'utiliser des playbooks basés sur YAML (`ansible-playbook`) pour la réutilisabilité, la lisibilité et la gestion des versions.
  • **Comprendre l'idempotence** : Ansible est conçu pour que l'état du système reste le même, même si les tâches sont exécutées plusieurs fois. C'est ce qu'on appelle l'idempotence, et ce concept doit être utilisé lors de la création de scripts d'automatisation.
  • **Authentification par clé SSH** : Il est recommandé d'utiliser des clés SSH au lieu de mots de passe pour renforcer la sécurité et simplifier le processus d'automatisation.
  • **Utilisation de Vault** : Les informations sensibles (mots de passe, clés API, etc.) doivent être gérées cryptées à l'aide d'Ansible Vault.

Commandes de la même catégorie