Blog

Automatisation d’infrastructure

Les outils DevOps aident les ingénieurs à automatiser les actions entre l’équipe de développement et l’équipe d’exploitation pour créer, tester et déployer des logiciels de manière fiable. Cependant, choisir les bons outils d’automatisation pour DevOps n’est pas chose facile.

Parmi les facteurs à prendre en compte figurent les besoins de votre projet, votre expertise, le modèle d’exploitation et l’architecture des outils, la convivialité, le support et d’autres particularités techniques et commerciales.

Dans cet article, nous nous concentrons sur trois tâches principales que vous devrez effectuer lors de l’automatisation de votre infrastructure informatique: la gestion de la configuration et l’orchestration, la gestion des secrets et la surveillance de l’infrastructure. Nous passons également en revue sept outils DevOps populaires pour l’automatisation des infrastructures – Ansible, Chef, Puppet, HashiCorp Vault, Monit, ELK et Zabbix – afin de vous aider à choisir ce qui correspond le mieux à vos besoins.

Quels sont les avantages de l’automatisation des infrastructures?

Commençons par déterminer ce qu’est l’automatisation des infrastructures et pourquoi vous pouvez en avoir besoin.

L’automatisation d’infrastructure, également appelée gestion de la configuration ou infrastructure scriptée, consiste à décrire la configuration de votre infrastructure sous forme de script. Vous pouvez créer une configuration unique pour différents processus, tels que l’installation d’un système d’exploitation ou la gestion des communications entre le logiciel et les instances, et appliquer cette configuration à plusieurs nœuds.

L’automatisation de votre infrastructure a deux raisons principales:

  • Gagnez du temps sur les tâches de routine. Les administrateurs système, les professionnels de l’informatique et les ingénieurs de DevOps doivent automatiser autant de tâches de routine que possible afin de disposer de suffisamment de temps pour résoudre les problèmes critiques.
  • Facilite la gestion des environnements complexes. L’automatisation permet de gérer des environnements complexes et variés et permet une mise à l’échelle rapide.

Les outils d’automatisation DevOps peuvent vous aider à tirer le meilleur parti du processus d’automatisation d’infrastructure. Cependant, il n’y a pas un outil universel capable de répondre à toutes vos prières. Il existe une grande variété d’outils DevOps que vous pouvez utiliser pour automatiser votre infrastructure. Dans cet article, nous examinons quelques outils populaires pour trois tâches principales de DevOps:

  • Orchestration
  • Gestion des secrets
  • surveillance
Figure 1

Il est maintenant temps d’examiner de plus près chacune de ces tâches. Commençons par l’orchestration d’infrastructure.

Choix des outils d’infrastructure d’orchestration

De la même manière que l’automatisation des infrastructures, l’orchestration permet aux spécialistes de DevOps de gérer plus facilement les tâches courantes et quotidiennes et de se concentrer sur des tâches plus importantes. La principale différence est que, bien que l’automatisation des infrastructures concerne davantage des tâches individuelles , l’orchestration se concentre sur l’optimisation et la normalisation des processus individuels . En particulier, l’orchestration est utilisée pour automatiser la configuration, la coordination et la gestion des logiciels et des systèmes informatiques.

Orchestration implique généralement des outils de script pour le déploiement et la connexion d’une application. De nombreux outils d’orchestration peuvent être utilisés pour écrire l’infrastructure en code (IaC), vous permettant de gérer votre environnement d’exploitation comme n’importe quel autre élément de code.

Ci-dessous, nous examinons brièvement trois outils d’orchestration populaires utilisés par les professionnels de DevOps: Ansible, Chef et Puppet. Commençons par Ansible.

Ansible

Ansible n’est pas seulement un outil d’orchestration, mais également un outil de gestion de configuration sans agent. Les modules de configuration dans Ansible s’appellent playbooks et sont écrits au format YAML. Il existe même une bibliothèque de playbooks de la communauté que vous pouvez utiliser comme modèles. 

À l’aide de cet outil IaC, vous pouvez intégrer et automatiser le développement, les tests, le déploiement et la gestion des performances. Il vous suffit de décrire le mode d’interaction du système et de ses composants; le reste sera traité par Ansible.

Ansible a deux avantages principaux:

  • Cela vous aide à vous débarrasser des répétitions inutiles
  • Cela réduit la complexité de votre infrastructure

Il présente également un certain nombre d’avantages supplémentaires:

  • Il peut être modulé pour les déploiements multi-niveaux
  • Il utilise un langage plutôt simple
  • Les fonctions peuvent être étendues et intégrées 
  • Vous pouvez chiffrer vos scripts et mots de passe avec Ansible-Vault
  • Aucune compétence particulière en codage n’est requise

Enfin, Ansible fonctionne avec SSH et ne nécessite pas d’agents, ce qui élimine le besoin de configurations supplémentaires du côté du client.

Chef

Chef est l’un des outils d’automatisation d’infrastructure cloud les plus populaires pour la gestion de la configuration. Il utilise un langage DSL (Ruby-Specific Language).

Le principal différenciateur de cet outil réside dans ses livres de recettes , unités de distribution de la configuration. Dans les livres de recettes, vous codez votre infrastructure et définissez des scénarios de configuration dans le DSL. Mais contrairement à Ansible, vous aurez également besoin de connaissances en programmation pour travailler avec Chef.

Chef est un outil de provisioning basé sur agent qui peut vous fournir des machines virtuelles (VM). Il utilise des agents pour configurer les ordinateurs virtuels et les serveurs en fonction des règles définies dans les livres de recettes. Pour ce faire, vous aurez besoin d’un agent s’exécutant sur tous les serveurs à configurer.

Chef a deux avantages principaux:

  • Configuration cohérente – Vous pouvez facilement maintenir une configuration cohérente même lorsque vous devez adapter votre infrastructure à la croissance rapide de votre application.
  • Infrastructure en tant que code – Vous pouvez décrire votre infrastructure en code et automatiser sa gestion.

Voici certaines des choses les plus utiles que fait Chef:

  • Transforme l’infrastructure en code
  • Réduit les coûts d’exploitation
  • Offre des stratégies de configuration flexibles, testables, personnalisables et lisibles
  • Vous aide à gérer efficacement les centres de données
  • Gère plusieurs environnements cloud
  • Automatise les configurations et les rend testables
  • Fournit des configurations cohérentes dans tous les environnements
  • Vous permet de personnaliser le code en fonction de vos besoins
  • Prend en charge la migration simple
  • Prise en charge de plusieurs plates-formes telles que FreeBSD et AIX

En outre, bien que vous puissiez créer des recettes et des livres de recettes personnels, Chef vous propose également une riche sélection de modèles prêts à l’emploi .

Mais peut-être que le meilleur dans Chef est que les configurations ne sont modifiées que lorsque le système s’écarte de l’état souhaité. Dans les systèmes correctement configurés, aucune action n’est entreprise.

Fantoche

Tout comme Chef, Puppet est un outil Ruby permettant de gérer les configurations d’infrastructure. C’est également une solution basée sur un agent, avec un agent Puppet s’exécutant sur tous les serveurs devant être configurés. L’agent extrait du serveur maître un module compilé contenant les spécifications du logiciel requis et l’installe sur tous les serveurs.

Cependant, Puppet n’exécute aucun code ni aucun script sur votre infrastructure. Au lieu de cela, il crée un graphique qui montre à quoi devrait ressembler la base de code de votre infrastructure. Ensuite, il recrée le modèle présenté dans ce graphique.

En d’autres termes, il vous suffit de définir l’état final de votre infrastructure et Puppet déterminera le meilleur moyen d’atteindre cet état souhaité.

Les principaux avantages de Puppet sont les suivants:

  • Déploiement rapide
  • Infrastructure comme code

Principales caractéristiques de la marionnette:

  • Définit et gère l’infrastructure en tant que code
  • Utilise les mêmes outils que les développeurs pour gérer les logiciels
  • Assure une collaboration continue des équipes d’exploitation, de développement et d’assurance qualité
  • Améliore la qualité du logiciel
  • Réduit les temps d’arrêt
  • Offre une variété de modules prêts à l’emploi pour une automatisation transparente
  • Adopte une approche basée sur les tâches
  • Permet une automatisation complète de l’infrastructure
  • Fournit des rapports contextuels en temps réel
  • Permet la détection et la résolution continues des conflits

Puppet a été conçu pour inspecter, gérer et entretenir rapidement l’infrastructure afin de pouvoir déployer les modifications en quelques heures seulement. De plus, il peut corriger les anomalies qui font dévier votre système de l’état souhaité.

Ansible, Chef et Puppet sont les trois outils les plus populaires utilisés par les professionnels de DevOps pour gérer les configurations d’infrastructure. Dans la section suivante, nous parlerons de l’importance de la gestion des secrets dans DevOps et de l’outil qui fonctionne le mieux pour assurer la sécurité de vos données sensibles: HashiCorp Vault.

Protéger les données sensibles avec la gestion des secrets

Chaque application utilise plusieurs types de données sensibles: mots de passe, clés d’API, jetons sécurisés, etc. Toutes ces données tombent dans la catégorie des secrets et nécessitent une attention particulière des spécialistes de DevOps.

Les secrets sont le type de données auquel tout le monde devrait pouvoir accéder facilement. Vous ne devez pas garder des secrets avec des données non sensibles et les stocker en texte brut. C’est pourquoi tous les systèmes de gestion de la configuration sont confrontés au problème de la sécurisation du stockage secret.

Mais pourquoi les secrets sont-ils si importants?

Ce sont les secrets qui vous aident à limiter l’accès aux données sensibles utilisées par votre application. Le problème est que les développeurs choisissent souvent les moyens les plus rapides et les plus simples de stocker et de gérer les secrets, qui ne sont pas toujours aussi sécurisés qu’ils le devraient.

Par exemple, vous pouvez voir les fichiers PEM, les clés SSH et d’autres secrets de configuration stockés dans des espaces partagés et transférés sur des canaux de communication non chiffrés. Tout en simplifiant le processus de gestion des secrets, ces pratiques augmentent considérablement le risque de compromission des données sensibles, car toute personne ayant accès à l’espace partagé peut accéder à ces secrets.

Ci-dessous, nous examinons de plus près un outil populaire et efficace pour la gestion des secrets: HashiCorp Vault.

HashiCorp Vault

HashiCorp Vault est un service de gestion de secrets. Il fournit une API qui donne accès aux secrets en fonction de règles. Tout utilisateur de l’API doit être authentifié et ne peut voir que les secrets qu’il est autorisé à voir.

Vault utilise la norme AES ( Advanced Encryption Standard ) 256 bits et le mode Galois / Counter (GCM) pour chiffrer les données sensibles. Il peut stocker des secrets dans différents backends comme Amazon DynamoDB, HashiCorp Consul et ETCD . Il fournit également d’autres moteurs permettant de créer des informations d’identification pour les bases de données MySQL, SQL Server et PostgreSQL.

Vault ne stocke jamais de secrets dans un emplacement persistant, ce qui réduit le risque de compromission des données. De plus, pour démarrer ou redémarrer Vault, un ou plusieurs opérateurs sont nécessaires pour le desceller d’abord. Un accès autorisé est requis pour toute opération secrète.

Pour authentifier les utilisateurs au niveau du transport, Vault utilise des jetons. Chaque jeton est affecté à une stratégie pouvant limiter les actions et les chemins. Les stratégies utilisent la correspondance basée sur le chemin pour appliquer les règles. Les jetons peuvent recevoir des métadonnées (valeurs de clé) et des noms d’affichage, ce qui facilite l’administration pour les utilisateurs.

Figure 2

Figure 1. Création et utilisation de jetons dans HashiCorp Vault

Vous pouvez créer des jetons manuellement et les affecter à des applications et à des utilisateurs. En outre, il existe plusieurs mécanismes d’authentification – LDAP (Lightweight Directory Access Protocol) , nom d’utilisateur / mot de passe et Jeton GitHub – qui permettent aux utilisateurs de se connecter et de recevoir un jeton.

Les jetons et les mécanismes d’authentification peuvent être révoqués, ce qui facilite le blocage d’un utilisateur spécifique.

Par exemple, voici à quoi ressemble le modèle d’authentification LDAP:

figure 3

Figure 2. Le modèle d’authentification LDAP

  1. L’utilisateur tente de s’authentifier dans Vault à l’aide de ses informations d’identification LDAP (nom d’utilisateur et mot de passe).
  2. Le coffre-fort établit une connexion à LDAP et demande au serveur LDAP de vérifier les informations d’identification. En supposant que la vérification aboutisse, le serveur LDAP renvoie les informations utilisateur, y compris les groupes d’unités d’organisation.
  3. Vault mappe le résultat du serveur LDAP sur les politiques internes de Vault, à l’aide du mappage configuré par le groupe de sécurité de la section précédente. Vault génère ensuite un jeton et y attache les stratégies appropriées.
  4. Vault renvoie le jeton à l’utilisateur. Ce jeton a maintenant des stratégies appropriées attribuées en fonction de la configuration de mappage précédemment configurée par le groupe de sécurité.

Désormais, l’utilisateur peut utiliser ce jeton de coffre-fort pour des opérations futures. Si l’utilisateur effectue à nouveau les étapes d’authentification, il recevra un nouveau jeton. Il aura les mêmes autorisations, mais le jeton lui-même sera différent. En outre, l’authentification pour une seconde fois ne rend pas le jeton d’origine invalide.

En plus de HashiCorp Vault, les professionnels de DevOps utilisent parfois des outils tels que HashiCorp Consul , etc., pour stocker en toute sécurité vos clés et vos secrets.

Dans la section suivante, nous abordons le problème de la surveillance des infrastructures et examinons brièvement quelques outils populaires pouvant vous aider.

Sélection d’une solution de surveillance d’infrastructure

Pour tout spécialiste DevOps, il est important de pouvoir surveiller votre infrastructure afin de pouvoir facilement savoir qui a fait quoi et quand. En règle générale, une bonne solution ou un bon ensemble d’outils de surveillance devrait couvrir quatre domaines principaux:

  1. Surveillance du réseau
  2. Surveillance des conteneurs
  3. Surveillance en nuage
  4. Alertes et notifications
figure 4

Regardons de plus près chacune de ces tâches.

Les outils de surveillance du réseau doivent vous fournir un certain nombre d’indicateurs de performance: bande passante, latence, vitesse de réponse, diverses métriques de niveau de port, flux de paquets réseau, utilisation de la CPU par les hôtes. Il est préférable que ces outils fournissent des métriques personnalisées et les agrègent.

Les outils de surveillance des conteneurs et des microservices doivent se concentrer sur la capture des états au niveau du conteneur pour l’utilisation du processeur, de la mémoire, du réseau et du disque, ainsi que sur les processus exécutés à l’intérieur des conteneurs.

Les outils de surveillance en nuage sont souvent fournis par des fournisseurs de nuage. À l’aide de ces outils, vous devriez pouvoir surveiller les charges de travail s’exécutant dans votre environnement cloud et consigner tout ce qui se passe dans cet environnement. Certains fournisseurs de services cloud proposent également des mesures de performance et au niveau du réseau, une visibilité complète des composants d’application, des mesures de microservices et de services PaaS, ainsi que le stockage et l’analyse des données reçues d’autres outils de surveillance.

Les alertes et les notifications pouvant être définies pour des règles prédéfinies sont obligatoires pour tout outil de surveillance. Recherchez une solution vous permettant d’envoyer des notifications par courrier électronique et des Webhooks, pouvant être intégrée dans des outils de collaboration ou ChatOps tels que Slack ou Telegram, vous permettant de définir des seuils d’utilisateur et vous avertissant lorsque ces seuils sont dépassés.

Vous trouverez ci-dessous un bref aperçu des trois outils de surveillance d’infrastructure courants: Monit, ELK et Zabbix.

Monit

Monit est un outil à code source ouvert permettant de gérer et de surveiller les systèmes Unix, ainsi que divers services cloud, bases de données et même hôtes distants, protocoles de serveur et ports TCP / IP.

Le but de Monit est de s’assurer que tout processus donné sur la machine est opérationnel et fonctionne correctement. Si un service surveillé tombe en panne, Monit corrigera les erreurs détectées et le réparera. Par exemple, si Apache se bloque, Monit redémarrera le processus Apache.

Monit enregistre toutes les informations sur l’état du système et les erreurs enregistrées. En outre, vous pouvez configurer Monit pour envoyer des notifications sur les erreurs critiques, les statuts de récupération et les redémarrages de services et de processus critiques.

Cet outil est facile à configurer et est particulièrement utile pour les architectures multi-services avec des centaines de microservices.

Pile d’ELK

La pile ELK , autrement connu comme la pile élastique, est un ensemble de trois outils de Devops open-source: ElasticSearch, Logstash et Kibana. Cet ensemble d’outils collecte les journaux de tous les services, applications, réseaux, outils, serveurs et autres éléments de l’environnement dans un emplacement centralisé aux fins de traitement et d’analyse.

Voici quelques caractéristiques importantes de la pile ELK:

  • Léger et facile à déployer
  • Prend en charge tous les formats de données
  • Permet de rechercher des journaux en temps réel

Vous pouvez utiliser cet outil de deux manières.

Tout d’abord, vous pouvez utiliser la pile ELK à des fins d’analyse. Il est pratique pour les tâches telles que le dépannage et la surveillance des services. ELK Stack peut également vous aider à réduire le temps nécessaire pour résoudre différents problèmes opérationnels.

Deuxièmement, vous pouvez l’utiliser à des fins de sécurité et d’audit, par exemple pour surveiller les modifications des groupes de sécurité ou les autorisations d’accès. En recevant des alertes sur ces modifications, vous pouvez facilement détecter et gérer les actions et les utilisateurs non autorisés.

Zabbix

Zabbix est un outil de surveillance open source qui vous permet de surveiller différents types de composants d’infrastructure informatique, notamment les réseaux, les serveurs, les services de cloud et les machines virtuelles. Il fournit une vaste sélection de métriques telles que l’utilisation du réseau, des disques et du processeur. 

Plus important encore, Zabbix automatise la découverte et la gestion de différents éléments d’infrastructure informatique. Il existe trois fonctions principales pour la découverte et la gestion automatiques des éléments d’environnement dans Zabbix:

  1. Découverte du réseau
  2. Découverte de bas niveau
  3. Enregistrement automatique des agents
figure 5

Examinons de plus près chacune de ces approches.

Avec la découverte du réseau , vous pouvez analyser périodiquement votre réseau à la recherche d’agents Zabbix passifs et de services externes. Cette fonction vous permet également de prendre des actions prédéfinies une fois qu’un tel service ou agent est détecté. La liste des actions possibles comprend l’envoi de notifications à un utilisateur, l’exécution de scripts distants et l’activation ou la désactivation d’un hôte.

La découverte de bas niveau vous permet de créer automatiquement des éléments, des déclencheurs et des graphiques en fonction du périphérique détecté. La découverte de bas niveau peut créer des métriques à partir d’identificateurs d’objet SNMP, de services Windows, de requêtes SQL (Open Database Connectivity) (ODBC), d’interfaces réseau, etc.

Enfin, l’enregistrement automatique des agents actifs vous permet de surveiller automatiquement les nouveaux équipements si un agent Zabbix actif est installé.

Zabbix possède également un certain nombre de fonctionnalités utiles. Par exemple, en utilisant la surveillance distribuée Zabbix , les scripts distants collectent les données de plusieurs appareils situés dans des emplacements répartis et rassemblent toutes ces données dans un seul panneau ou rapport, par exemple sur la disponibilité des serveurs dans tout le pays.

En outre, vous pouvez configurer Zabbix pour envoyer des notifications par courrier électronique ou messagerie instantanée en fonction d’événements prédéfinis.

Conclusion

L’automatisation des infrastructures est l’une des tâches les plus importantes des professionnels de DevOps. Une fois organisé correctement, il peut vous aider à réduire le temps passé sur des tâches répétitives, à gagner du temps pour traiter les problèmes critiques et à améliorer la sécurité et les performances globales de votre infrastructure.

Dans cet article, nous avons décrit les trois défis les plus importants à résoudre lors de l’automatisation de l’infrastructure informatique: orchestration, gestion des secrets et surveillance. Nous avons également nommé certains des outils les plus populaires pour chacune de ces tâches.

Ces outils ont leurs avantages, mais aucun n’est une solution miracle pour toutes les équipes de DevOps. Le choix final dépendra toujours des besoins spécifiques de votre projet.

Leave a Reply


Your email address will not be published. Required fields are marked *