Definition

Ansible

Ansible est une plateforme informatique open source de gestion des configurations (CM, Configuration Management) et d'automatisation, fournie par Red Hat. Elle utilise des modèles YAML directement lisibles qui permettent aux utilisateurs de programmer l'exécution automatique de tâches répétitives sans avoir à apprendre un langage évolué.

Ansible remplace l'écriture de scripts ad hoc ou la CM manuelle par un processus automatisé et reproductible. L'outil transmet (« push »), sous forme de modules, du code applicatif, des programmes et des instructions de configuration de l'infrastructure informatique à des nœuds gérés (serveurs physiques, machines virtuelles ou instances cloud). Il est également possible d'inverser sa configuration pour la transformer en architecture de type « pull », dans laquelle ce sont les nœuds gérés eux-mêmes qui demandent des instructions, un mécanisme généralement utilisé pour faire évoluer les systèmes.

Composants d'Ansible

Un utilisateur d'Ansible élabore des instructions sous forme de commandes ou les regroupe dans des scénarios réutilisables, exécutés dans des « playbooks ». Ansible met en œuvre une fonction d'orchestration, qui permet de contrôler l'ordre de l'exécution des étapes automatisées.

Ansible est sans agent : il n'installe aucun logiciel sur les nœuds qu'il gère, ce qui élimine le risque de points de défaillance et de failles de sécurité, tout en économisant les ressources système.

L'outil CM s'intègre à d'autres technologies de gestion et d'hébergement de systèmes, dont les bibliothèques de ressources, les logiciels de surveillance et de collaboration, et les plateformes de cloud et de virtualisation. Ansible peut contrôler des systèmes Windows à l'aide de Windows Remote Management (WinRM). En revanche, le nœud de contrôle Ansible doit être sous Linux, avec Python 2.6 ou une version supérieure.

Introduction à Ansible

L'expert informatique Stuart Burns passe en revue les fondamentaux d'Ansible.

Chez Red Hat, Ansible sert à améliorer de diverses façons l'intégration et le fonctionnement d'autres produits Red Hat, tels qu'OpenShift et Red Hat Enterprise Linux (RHEL). Par exemple, un utilisateur d'OpenShift peut connecter une base de données externe à une application Web à trois niveaux hébergée par OpenShift, via OpenShift Ansible Broker (OAB). En outre, les rôles et playbooks d'Ansible permettent de gérer de façon cohérente les produits Red Hat de versions différentes.

Ansible est disponible via APT, EPEL (Extra Packages for Enterprise Linux), Fedora et le réseau de diffusion de contenu (CDN, Content Delivery Network) de Red Hat, ou sur Ansible.com.

Ansible Engine et Tower

Ansible fait partie du groupe des produits de gestion de systèmes de Red Hat pour l'informatique d'entreprise. Ce groupe comprend également la solution de gestion d'infrastructures Satellite, la structure de gestion de cloud CloudForms et le service de surveillance et de dépannage Red Hat Insights.

Ansible Engine est un produit Red Hat qui apporte aux entreprises la fonctionnalité de projet open source. Il s'agit d'une version stabilisée et consolidée des technologies d'automatisation en amont. Ansible Engine inclut le module central d'exécution de tâches et des modules pour les fonctionnalités de base, la mise en réseau, la communauté et d'autres domaines. Il fonctionne uniquement par une interface de ligne de commande, qui ressemble à une CLI Linux, l'utilisateur devant disposer de tous les identifiants nécessaires.

Ansible Engine suit le même modèle d'abonnement que les autres offres open source de Red Hat, qui comprend des mises à jour de sécurité et de maintenance, ainsi qu'un accord de niveau de service (SLA) régissant les éventuelles interventions. Le produit est disponible avec deux niveaux d'assistance internationale. Les licences Engine, proposées en abonnement annuel, se déclinent selon le nombre de nœuds : 100, 5 000 et 10 000.

 Figure 1. Ansible Engine permet de contrôler les configurations via une interface de ligne de commande.
Figure 1. Ansible Engine permet de contrôler les configurations via une interface de ligne de commande.

Ansible Tower constitue un ensemble de fonctions de gestion et de contrôle d'accès qui viennent renforcer les fonctionnalités d'Ansible Engine. C'est une offre prise en charge par Red Hat, basée sur le projet AWX en amont. Grâce au contrôle des accès fondé sur les rôles (RBAC, Role-Based Access Control), l'équipe informatique peut, à l'aide de Tower, contrôler les identifiants des utilisateurs pour les systèmes gérés. La plateforme, munie d'une interface utilisateur graphique (GUI), comprend également des tableaux de bord personnalisables, un module de gestion des stocks, un système de notification, ainsi que des fonctions de planification des tâches.

Outre la GUI, une CLI Tower est disponible. Les utilisateurs de Tower peuvent intégrer Ansible dans leurs processus et chaînes de compilation, au niveau du développement, du traitement informatique et de DevOps, à l'aide de l'API dédiée. Les groupes d'instances et les nœuds isolés permettent de contrôler les déploiements avec précision. Les licences Tower sont gratuites jusqu'à 10 nœuds ou pour une période d'évaluation. Au-delà, il existe des licences annuelles pour 100, 5 000 et 10 000 nœuds. Les utilisateurs peuvent acquérir Ansible Engine ou Tower séparément, ou sous forme d'offre groupée.

 Figure 2. Ansible Tower comprend des tableaux de bord permettant de surveiller les configurations, ainsi qu'une interface utilisateur graphique (GUI).
Figure 2. Ansible Tower comprend des tableaux de bord permettant de surveiller les configurations, ainsi qu'une interface utilisateur graphique (GUI).

Ansible, Chef, Puppet et autres outils

Plusieurs produits présentent des approches concurrentes en matière d'automatisation de l'infrastructure, de déploiement d'applications et de CM. Ansible et ses concurrents proposent des offres variées, qu'elles soient purement open source, open source prises en charge ou commerciales exclusives. Les services informatiques ont donc tout intérêt à les comparer avant de faire leur choix. Il est même possible de déployer plusieurs produits ensemble. Par exemple, Puppet peut exécuter des configurations qui sont ensuite orchestrées par Ansible, ou le développeur peut travailler avec Chef tandis que l'équipe chargée de l'exploitation utilise Ansible.

Les principaux concurrents d'Ansible sont :

  • Chef,
  • Puppet,
  • PowerShell Desired State Configuration (DSC) et
  • Salt.

Ansible a été développé en 2012 par Michael DeHaan et racheté par Red Hat en 2015. Ainsi, sa technologie CM est beaucoup plus récente que celle de Chef et Puppet, et contemporaine de celle de Salt. Après avoir acquis Ansible, Red Hat a développé Engine sous forme d'offre commerciale et créé AWX, qui constitue la version open source en amont de Tower.

Ansible et Salt font appel à YAML, tandis que Chef utilise JSON et Ruby et que Puppet s'appuie sur un langage déclaratif propre à un domaine. Les utilisateurs de PowerShell DSC doivent connaître la programmation PowerShell. Ansible repose sur une approche sans agent, tandis que les offres concurrentes de Chef, Puppet, Salt et PowerShell DSC installent des agents, même si certaines configurations sans agent sont possibles.

Les outils CM, dont Ansible, rivalisent également avec Docker et d'autres technologies d'orchestration pour la gestion des charges de travail en conteneurs. Un utilisateur Ansible peut créer un conteneur en définissant sa charge utile. Ansible Container est un projet open source qui permet de construire, déployer et gérer des conteneurs. S'ils empiètent partiellement sur le domaine des outils d'intégration continue (CI, Continuous Integration), tels que Jenkins, Ansible et ses concurrents collaborent avec ces technologies, se chargeant notamment du déploiement après livraison par le pipeline CI d'un code prêt à l'emploi.

Cette définition a été mise à jour en avril 2019

Pour approfondir sur Architectures logicielles et SOA

Close