Chaque jour, la même routine pour l’administrateur système de la vieille école : déployer ou modifier manuellement les machines virtuelles, personnaliser le système d’exploitation, mettre à jour les paquets, appliquer des correctifs de sécurité, affiner la configuration sur l’environnement existant, créer des routines avec un script shell (qui ne peut pas être exécuté deux fois, la plupart du temps), déployer manuellement des applications (copier des fichiers, redémarrer des instances, vérifier l’état du service) : tout cela est sujet à des défaillances humaines, mettant en péril la standardisation de l’environnement.

Tout cela entraîne des retards, de la démotivation (avec des tâches répétitives) et une faible productivité, ce qui entrave l’évolutivité des services que vous gérez. Dans les environnements gérés par l’un de ces Sysadmins, la culture DepOps est à maturité zéro et l’infrastructure comme le code ne fait pas encore partie de la routine de travail.

Pour tenter de résoudre ces problèmes, il est nécessaire d’entrer dans le monde de l’automatisation, en utilisant des outils modernes de gestion de configuration, de provisionnement et d’orchestration.

Automatisation de l’infrastructure :

De nombreux outils disponibles, tels que Ansible, Puppet, Saltstack, Chef et CFEngine, permettent l’automatisation de l’infrastructure, le cloud, la gestion de la conformité et de la sécurité, l’intégration pour le déploiement et le déploiement continu (CI / CD). Quel est le meilleur outil pour commencer à automatiser votre environnement ?

La difficile tâche de prospection d’un de ces outils empêche l’administrateur système d’évoluer techniquement et de proposer des améliorations à l’environnement qu’il gère. Ils fonctionnent à l’ancienne et sont conservateurs et peu enclins au changement, « Si ce n’est pas cassé, ne le réparez pas ». Les administrateurs système doivent être au fait des dernières avancées en matière d’automatisation et lorsqu’ils commenceront à étudier l’automatisation, ils seront amenés à utiliser plusieurs outils qui, en théorie, font la même chose. Cela peut rendre le travail un peu traumatisant et démotivant pour ceux qui commencent.

Quel est le meilleur outil pour ceux qui n’ont aucune maturité en matière d’automatisation ?

La réponse rapide à toutes ces questions : Ansible

Mais pourquoi Ansible et pas les autres outils dans ce cas ?

1) Tout en un : Simplifier l’automatisation

Ansible peut être considéré comme un outil « tout en un » : Toutes les étapes d’automatisation peuvent être réalisées avec Ansible. Ceci est dû au fait qu’Ansible a été développé en Python, et en plus d’hériter de la fonctionnalité de langage à usage général, vous pouvez utiliser les milliers de paquets existants de la communauté Python pour créer vos propres modules.

Ansible compte actuellement plus de 1300 modules dans plusieurs domaines de l’infrastructure informatique : Web, base de données, réseau, cloud, cluster, surveillance, Windows, stockage et autres.

Nous savons que d’autres outils fonctionnent mieux à un certain stade, mais dans un environnement d’automatisation à maturité zéro, Ansible peut aider une équipe à atteindre plus rapidement la maturité en matière d’automatisation.

Gestion de la configuration : Le code, le cycle de vie et les modifications peuvent être effectués par le biais de l’inventaire, des playbooks et des rôles dans Ansible. Il est possible de gérer les états souhaités et l’idempotence nativement dans les tâches qui seront effectuées.

Orchestration : Moteur d’orchestration simplifié et puissant. Ansible s’intègre dans presque tous les domaines de l’infrastructure, du provisionnement des VM à la création de règles sur le pare-feu. Il se concentre également sur les domaines dans lesquels d’autres outils laissent des lacunes, comme l’arrêt zéro, les mises à jour continues pour les applications multi-niveaux dans l’infrastructure.

Provisionnement : Ansible dispose de modules pour les conteneurs (Docker), la virtualisation (VMware, AWS, OpenStack, Azure, Ovirt) et peut facilement s’intégrer avec d’autres tâches des étapes précédentes.

2) Courbe d’apprentissage inférieure :

Ansible a un taux d’apprentissage très rapide, avec une installation et une configuration initiale faciles. En moins de 30 minutes, il est possible d’installer, de configurer et d’exécuter des commandes ad hoc pour « n » serveurs afin de résoudre un problème spécifique : réglage de l’heure d’été, synchronisation de l’heure, changement de mot de passe root, mise à jour des serveurs, redémarrage des services, etc.

La syntaxe et le flux de travail sont simples à comprendre, ce qui facilite l’apprentissage pour les nouveaux utilisateurs. Les fichiers utilisent YAML (YAML Is not Markup Language), une norme de langage déclaratif convivial, largement utilisé par d’autres outils et facile à comprendre, avec en plus l’utilisation du langage Python pour étendre les fonctionnalités d’Ansible avec des modules personnalisés.

3) Infrastructure mutable

Nous savons que l’ancien modèle d’infrastructure prend du temps pour converger vers un environnement entièrement automatisé (l’infrastructure comme code). Les environnements gérés par Sysadmins sont constamment modifiés (infrastructure mutable) et tout changement est coûteux, peut entraîner des conflits entre les équipes et de nombreuses interventions manuelles. Ansible s’adapte bien aux environnements mixtes, coexistant de manière transparente avec des environnements partiellement ou principalement automatisés. La transition d’un modèle à l’autre sera moins traumatisante avec Ansible.

4) Pas d’agents : Seulement un « Contrôle Ansible

Ansible ne nécessite pas d’agents installés aux points d’extrémité. La seule exigence est un serveur installé par Ansible avec un accès aux serveurs à gérer via les protocoles SSH (pour les environnements Linux) ou WINRM (Windows Remote Access). Les playbooks poussent les paramètres souhaités sur les hôtes définis dans l’inventaire et peuvent même exécuter Ad-Hoc (via la ligne de commande, ne nécessitant pas de définitions dans les fichiers). Le modèle sans agent permet des ajustements et une communication plus rapide que le modèle client-serveur.

La seule exigence sur les hôtes Linux est d’avoir Python installé. Aujourd’hui, Python est installé en natif sur la plupart des distributions Linux.

5) Automatiser dès maintenant :

Dès que vous êtes en mesure d’effectuer un ping sur les hôtes via Ansible, vous pouvez lancer l’automatisation de votre environnement.

Commencez par de petites tâches, en suivant les meilleures pratiques, en donnant la priorité aux tâches qui apportent une valeur ajoutée à l’entreprise et résolvent les problèmes majeurs ou en conservant les demandes, en gagnant du temps et en augmentant la productivité.

Conclusion :

Les équipes d’administrateurs système qui travaillent à l’ancienne (tous manuels et avec des outils improductifs) doivent de toute urgence passer à l’automatisation de l’infrastructure. Il sera difficile de convaincre et d’engager les gens, mais le choix d’Ansible se traduira par des gains importants pour l’équipe et l’organisation.

Le choix d’Ansible peut aider l’équipe à résoudre rapidement son « talon d’Achille », tout en augmentant la productivité et en favorisant la collaboration et la satisfaction professionnelle.

Allez directement sur cette voie et soyez heureux : Automatisez la partie lourde, ennuyeuse et répétitive avec Ansible et ayez le temps de devenir plus créatif.

Extra : Ansible est-il considéré comme un gestionnaire de configuration ou non ?

Il y a plusieurs discussions sur Internet pour savoir si Ansible est considéré comme un outil de gestion de configuration. La partie théorique de la gestion de configuration est basée sur l’école GCONF présentée par Mark Burgess, créateur de CFEngine, où il dit que les principes de GCONF sont l’impuissance et l’état désiré.

L’idempotence est la caractéristique de vérifier l’état actuel de ce qui va être modifié. S’il est déjà dans l’état souhaité, aucune action n’est entreprise. Ansible dans sa version 2.3 comporte plus de 1300 modules qui, pour la plupart, suivent le principe de l’idempotence. Dans les cas où Ansible n’a pas de module natif, il existe un ensemble de « modules de commande » (shell, raw, telnet, command, script) qui doivent être manipulés de manière à devenir idempotents grâce à des attributs « args » ou des directives appropriées (when, when_changed, when_failed etc).

En ce qui concerne le point de convergence, le créateur d’Ansible, Michael DeHaan, a déclaré dans le groupe de discussion Ansible

Ce « Desired State » est aussi parfois mal étiqueté comme « Convergence ». La convergence signifie généralement que si je lance ce processus 4 ou 5 fois, il aboutit à l’état désiré. C’est terrible, vous voulez y arriver en un seul bond ! (…) Je pense que l’industrie est un peu en proie à l’idée que les choses simples doivent être discutées en termes compliqués, et Ansible n’est pas comme ça. Nos objectifs sont simples – Parlez dans un langage simple. Faire en sorte que les choses soient faites ».

Par conséquent, ne vous laissez pas tromper en pensant qu’Ansible ne peut pas être utilisé comme outil de gestion de la configuration. Versionnez votre code, utilisez un outil de gestion des tâches (Rundeck, Jenkins, Tower, AWX ou Ansible-pull itself), modifiez le flux de travail des changements pour utiliser infra comme un code et gardez votre environnement à jour et dans l’état souhaité.