Qu'est-ce qu'Ansible ?
Ansible est un moteur d'automatisation informatique Open Source qui automatise le provisionnement, la gestion des configurations, le déploiement des applications, l'orchestration et bien d'autres processus informatiques.
Utilisez le moteur d'automatisation Ansible pour installer des logiciels, automatiser des tâches quotidiennes, provisionner une infrastructure, améliorer le niveau de sécurité et de conformité, appliquer des correctifs système et faire profiter toute l'entreprise de l'automatisation.
Fonctionnement d'Ansible
Ansible se connecte aux nœuds et leur envoie de petits programmes, appelés « modules ». Ces modules accomplissent les tâches d'automatisation dans Ansible.
Ces programmes représentent les modèles de ressources pour l'état souhaité d'un système. Ansible exécute les modules, puis les supprime.
Sans ces modules, il faut recourir à des commandes et scripts ad hoc pour accomplir chaque tâche.
Ansible est une technologie sans agent, ce qui signifie qu'elle n'installe aucun logiciel sur les nœuds qu'elle gère.
Ansible lit les informations concernant les machines que vous souhaitez gérer à partir de votre inventaire. Ansible dispose d'un fichier d'inventaire par défaut, mais vous pouvez créer le vôtre et y indiquer les serveurs à gérer avec Ansible.
Pour se connecter aux serveurs et exécuter des tâches, Ansible utilise le protocole SSH. Par défaut, Ansible utilise des clés SSH avec ssh-agent et se connecte aux machines distantes à l'aide de votre nom d'utilisateur actif. Pas besoin d'une connexion root, vous pouvez vous connecter avec le compte de n'importe quel utilisateur, puis utiliser la commande su ou sudo pour passer à un autre compte utilisateur.
En savoir plus sur la manière dont SSH sécurise les communications
Une fois connectée, la technologie Ansible transfère les modules requis par votre commande ou playbook vers les machines distantes pour leur exécution.
Ansible utilise des modèles YAML lisibles par l'homme. Ainsi, les utilisateurs peuvent automatiser des tâches répétitives sans avoir à apprendre un langage de programmation avancé.
Ansible contient des modules intégrés qui vous permettent d'automatiser des tâches. Vous pouvez également rédiger les vôtres dans n'importe quel langage capable de renvoyer une réponse au format JSON, notamment Ruby, Python ou bash. Les modules d'automatisation pour Windows sont même écrits en PowerShell.
Utiliser Ansible pour des commandes ad hoc
Vous pouvez utiliser Ansible pour exécuter des commandes ad hoc. Pour ce faire, vous devez exécuter une commande ou appeler un module directement à partir de l'interface en ligne de commande. Pas besoin de playbook dans ce cas.
Cette méthode convient aux tâches ponctuelles, mais pour les processus plus complexes, vous devez utiliser un playbook Ansible.
Playbooks Ansible
Les playbooks Ansible servent à orchestrer des processus informatiques. Un playbook est un fichier YAML qui contient un ou plusieurs plays (jeux de tâches) et qui permet de définir l'état souhaité d'un système, tandis qu'un module Ansible est un script autonome qui peut être utilisé à l'intérieur d'un playbook Ansible.
Les plays consistent en une série de tâches à exécuter sur les hôtes sélectionnés dans le fichier d'inventaire Ansible.
Les tâches sont les éléments qui constituent un play et qui appellent les modules Ansible. Dans un play, les tâches sont exécutées dans l'ordre de déclaration.
Pendant son exécution, Ansible suit l'état du système. S'il analyse un système et détecte une incohérence entre la description du système dans le playbook et son état réel, il fait les ajustements nécessaires pour que l'état réel corresponde à celui du playbook.
Ansible inclut un mode de vérification, qui vous permet de confirmer les playbooks et commandes ad hoc avant qu'un changement soit effectué sur le système. Ainsi, vous pouvez voir ce qu'Ansible modifierait, sans pour autant faire la modification.
Les gestionnaires Ansible servent à exécuter une tâche spécifique uniquement après un changement du système. Ils sont déclenchés par des tâches et exécutés une seule fois, après tous les autres plays du playbook.
Les variables Ansible permettent de modifier la manière dont un playbook s'exécute. Elles sont utilisées pour prendre en compte les différences entre les systèmes, notamment les versions de paquet et les chemins d'accès aux fichiers, car Ansible vous permet d'exécuter des playbooks sur plusieurs systèmes.
Les variables Ansible doivent être définies en fonction de l'action effectuée par votre playbook.
Les variables respectent les règles de priorité qui définissent l'ordre dans lequel elles s'appliquent. C'est un point à bien comprendre si vous souhaitez inclure des variables dans vos playbooks.
Pour utiliser Ansible, vous devez également comprendre le concept de collection. Les collections représentent un format de distribution de contenu Ansible qui peut inclure des playbooks, rôles, modules et plug-ins.
Les rôles Ansible correspondent à un type spécifique de playbook totalement autonome et portable. Ils contiennent les tâches, variables, modèles de configuration et tous les autres fichiers requis pour une orchestration complexe.
Il peut y avoir plusieurs rôles dans une même collection, ce qui simplifie le partage de contenu via les plateformes Automation Hub et Ansible Galaxy.
Gestion des configurations avec Ansible
La gestion des configurations est un processus qui permet de maintenir les systèmes informatiques, les serveurs et les logiciels dans l'état souhaité et d'en préserver la cohérence. C'est une façon de s'assurer qu'un système fonctionne comme prévu au fil des changements effectués.
Avant, cette opération était réalisée par les administrateurs système de façon manuelle ou avec un script personnalisé.
Découvrir cinq façons de renforcer un nouveau système avec Ansible
Lorsqu'il est utilisé pour la gestion des configurations, l'outil Red Hat® Ansible® Automation Platform permet d'enregistrer l'état actuel de vos systèmes et de le maintenir.
Avec les outils de gestion des configurations, vous accélérez les changements et les déploiements, vous évitez les risques d'erreur humaine et vous rendez la gestion des systèmes plus prévisible et évolutive.
Ces outils permettent également de suivre l'état de vos ressources et vous évitent de répéter des tâches, telles que l'installation d'un même paquet deux fois.
Grâce à la gestion automatisée des configurations avec Ansible, vous pouvez améliorer la récupération du système après un événement critique. Si un serveur s'arrête pour une raison inconnue, vous pouvez en déployer un nouveau rapidement et obtenir un enregistrement de toutes les modifications ou mises à jour qui ont eu lieu, afin d'identifier l'origine du problème.
Provisionnement avec Ansible
Aujourd'hui, l'infrastructure est majoritairement logicielle et la virtualisation ainsi que les conteneurs ont accéléré le processus tout en réduisant la fréquence de provisionnement et de gestion du matériel.
Il est difficile de suivre les modifications, de contrôler les versions et d'éviter les erreurs et incohérences lorsque le provisionnement est géré manuellement, pour chaque déploiement.
L'automatisation du provisionnement d'une infrastructure constitue la première étape de l'automatisation du cycle d'exploitation des applications.
Vous pouvez utiliser Ansible pour approvisionner l'infrastructure sous-jacente de votre environnement, les hôtes virtualisés et les hyperviseurs, les périphériques réseau et les serveurs bare metal. Ansible permet également d'installer des services, d'ajouter des hôtes de calcul et d'approvisionner des ressources, services et applications au sein de votre cloud.
Les playbooks servent à décrire l'état souhaité de votre infrastructure pour qu'Ansible puisse ensuite l'approvisionner. En codifiant votre infrastructure à l'aide d'un playbook, vous êtes certain de provisionner le même environnement à chaque fois.
Automatisation du déploiement avec Ansible
L'automatisation du déploiement vous permet de déplacer vos logiciels entre les environnements de test et de production à l'aide de processus automatisés. Ainsi, vous assurez la reproductibilité et la fiabilité des déploiements tout au long du cycle de distribution.
L'automatisation du déploiement est essentielle pour la mise en œuvre des pratiques DevOps et la gestion du pipeline CI/CD.
Il est impossible d'automatiser le déploiement si l'équipe de développement et l'équipe d'exploitation ne se mettent pas d'accord sur la manière de déployer les applications ou de configurer les environnements.
En effet, pour automatiser un environnement, il faut que celui-ci soit cohérent. Aussi, vous devez appliquer le même processus de déploiement à tous vos environnements, y compris à l'environnement de production.
En général, un pipeline de déploiement se compose de trois étapes principales (parfois plus) : création, test et déploiement. C'est ce pipeline qui vous permet d'automatiser le processus de déploiement et d'assurer un passage rapide du code en déploiement.
Ansible vous permet de déployer des applications à plusieurs niveaux de manière fiable et cohérente, à partir d'un framework commun. Vous pouvez configurer les services requis et publier les artefacts d'application à l'aide de playbooks.
Orchestration avec Ansible
En général, l'automatisation concerne une tâche unique. C'est ce qui la différencie de l'orchestration, qui décrit comment automatiser un processus ou un workflow constitué de nombreuses étapes réalisées sur plusieurs systèmes disparates.
L'orchestration du cloud peut être utilisée pour approvisionner ou déployer des serveurs, attribuer de la capacité de stockage, créer des machines virtuelles et gérer le réseau en plus d'autres tâches. Il existe de nombreux outils qui vous aideront à orchestrer le cloud, notamment Ansible.
La configuration et la gestion des serveurs ainsi que les déploiements d'applications peuvent également être orchestrés à l'aide d'un outil tel qu'Ansible.
Découvrir comment expliquer clairement l'orchestration
Lors du déploiement d'applications, les services front-end et back-end, les bases de données, les outils de surveillance, les réseaux et le système de stockage ont tous un rôle à jouer et doivent être configurés et déployés individuellement. L'orchestration assure le bon déroulement de chaque étape du processus.
Ansible vous permet d'orchestrer le déploiement en exécutant les tâches du playbook dans l'ordre dans lequel elles ont été rédigées. Ainsi, vous avez la garantie que le processus se déroulera comme prévu.
Automatisation des réseaux
L'automatisation des réseaux s'appuie sur une logique programmable qui permet de gérer les ressources et les services des réseaux. L'automatisation des réseaux permet aux équipes d'exploitation réseau (NetOps) de configurer, de mettre à l'échelle, de protéger et d'intégrer l'infrastructure réseau et les services d'applications plus rapidement que si ces tâches étaient effectuées manuellement par les utilisateurs.
Si les technologies sous-jacentes ont largement évolué, la gestion des réseaux continue de stagner depuis des décennies. Les réseaux sont généralement conçus, exploités et entretenus manuellement.
Toutefois, les approches traditionnelles et manuelles adoptées jusqu'ici pour configurer et mettre à jour les réseaux sont lentes et propices aux erreurs. Elles ne permettent donc pas de satisfaire efficacement les exigences des charges de travail qui évoluent en permanence.
L'automatisation des ressources et de la gestion des services du réseau permet aux équipes d'exploitation réseau de gagner en agilité et en flexibilité, tout en répondant efficacement aux demandes des entreprises modernes.
Automatisation de la sécurité
L'automatisation de la sécurité consiste à utiliser des technologies pour réaliser des tâches, avec une intervention humaine réduite, afin d'intégrer des processus, des applications et une infrastructure de sécurité.
L'automatisation vous aide à rationaliser les tâches quotidiennes, ainsi qu'à intégrer la sécurité aux processus, aux applications et à l'infrastructure dès le départ. En automatisant totalement la sécurité, vous pouvez même réduire le coût moyen d'une faille de 95 %.
L'automatisation de vos processus de sécurité peut vous aider à identifier, confirmer et signaler les menaces plus rapidement qu'avec des processus manuels.
En cas d'incident, les équipes de sécurité peuvent utiliser Ansible pour apporter rapidement et simultanément des correctifs aux systèmes affectés dans votre environnement et accélérer la résolution des problèmes.
Découvrir trois façons de se lancer dans l'automatisation de la sécurité informatique
Avec Ansible, les équipes de sécurité peuvent configurer une séquence de tâches qui partagent un inventaire, des playbooks ou des autorisations pour automatiser totalement les tâches de recherche ou les mesures de correction.
La solution Red Hat Ansible Automation Platform s'intègre à des services externes d'agrégation de journaux tiers qui aident les équipes de sécurité à identifier les tendances, analyser les événements liés à l'infrastructure, surveiller les anomalies et mettre en corrélation des événements disparates.
Formations autour d'Ansible
Automatisation de Red Hat Enterprise Linux avec Ansible
Ce cours explique comment automatiser les tâches d'administration système Linux® à l'aide de la solution Ansible Automation Platform.Vous découvrirez les techniques qui permettent d'utiliser Ansible Automation Platform pour automatiser le provisionnement, la configuration, le déploiement d'applications et l'orchestration.
Les bases d'Ansible : présentation technique de l'automatisation
Cette série de vidéos en ligne et à la demande présente tout ce que vous devez savoir sur Ansible : automatisation, gestion des configurations, provisionnement, déploiement et gestion d'une infrastructure de calcul dans des environnements physiques, virtuels et cloud.
Étude de cas : la culture de l'automatisation informatique selon Microsoft
Microsoft souhaitait instaurer une culture de la réussite et de la collaboration dans l'ensemble des équipes, en se basant sur les technologies d'automatisation.
Microsoft a utilisé la solution Red Hat Ansible Automation Platform et les services de consulting Red Hat pour créer un environnement d'automatisation réseau centralisé et standardisé qui réduit la complexité ainsi que le nombre de tâches courantes et reproductibles, tout en permettant la validation et la réutilisation du code de production.
Grâce à l'adoption d'une culture DevOps, ses équipes peuvent maintenant se concentrer sur le partage des connaissances, le renforcement des compétences et la création de solutions technologiques novatrices.
Lisez l'étude de cas complète pour en savoir plus sur la réussite de Microsoft.
Red Hat, un partenaire de choix en matière d'automatisation
Red Hat travaille avec la vaste communauté Open Source sur les technologies d'automatisation. Nos ingénieurs améliorent les fonctions, la fiabilité et la sécurité de nos solutions pour vous assurer que votre environnement informatique et votre entreprise fonctionnent correctement tout en restant stables et sécurisés.
La solution Red Hat Ansible Automation Platform comprend tous les outils nécessaires à la mise en œuvre de l'automatisation à l'échelle de l'entreprise, notamment des playbooks et des outils d'analyse. Elle permet aussi aux utilisateurs de centraliser et contrôler leur infrastructure informatique au moyen d'un tableau de bord visuel, du contrôle d'accès basé sur les rôles et de nombreuses autres fonctions, avec à la clé une réduction de la complexité opérationnelle.
Cette plateforme inclut également la fonction Automation Analytics, que les membres de l'équipe d'exploitation peuvent utiliser pour analyser l'utilisation, la disponibilité et les schémas d'exécution d'Ansible Automation Platform dans différentes équipes.
Ansible Automation Hub est le portail qui permet de découvrir et comprendre le contenu Ansible sélectionné et pris en charge par Red Hat et celui que proposent les partenaires certifiés pour Ansible, afin d'aider les utilisateurs à prendre en main cette technologie.
Les entreprises souhaitent non seulement adopter une solution facile à mettre en place, mais aussi partager et réutiliser les processus d'automatisation d'un projet à l'autre, entre plusieurs équipes, sans sacrifier la gouvernance et le contrôle.
Avec la solution d'automatisation adéquate, vous pouvez déployer plus rapidement de nouveaux services et applications, gérer plus efficacement l'infrastructure informatique et constater une amélioration de la productivité en matière de développement d'applications.