Ansible Provisioning: un mode de provisionnement plus intelligent et sans effort

Ce blog Ansible Provisioning souligne l'une des fonctionnalités Ansible les plus utiles. Il montre comment configurer une pile LAMP et héberger un wensite sur Ubuntu.

La première étape de l'automatisation de tout cycle de vie opérationnel de l'application consiste à automatiser le provisionnement de l'infrastructure. Le provisionnement est un processus ennuyeux de configuration des configurations, d'allocation de mémoire, d'espace disque, etc., avant de les utiliser réellement. Voyons comment Ansible Provisioning rend cela plus simple et plus rapide.



La plupart des déploiements à grande échelle nécessitent que vous ayez une configuration d'environnement identique sur plusieurs systèmes.Alors, comment faites-vous cela? Exécuter manuellement le même ensemble de commandes sur une centaine de systèmes ?? Nahh ... C'est trop vieille école. C'est quelque chose pour lequel les machines sont bonnes, pas les humains. Et si je vous disais que ce processus long et ennuyeux pourrait être fait en exécutant simplement un seul playbook Ansible?C'est ce dont nous allons parler dans ce blog - Ansible Provisioning.



Les sujets abordés sont:

Si vous souhaitez maîtriser DevOps, ' le cours devrait être votre option préférée.



Qu'est-ce qu'Ansible?

DevOps est une culture dans laquelle l'automatisation reçoit une très haute priorité. Lorsqu'il peut y avoir des outils pour automatiser le déploiement et le processus de test, pourquoi ne pas avoir des outils pour la gestion de la configuration et l'approvisionnement. Il existe un million de façons de devenir plus intelligent et utiliser Ansible en fait partie. C'est l'un des outils les plus utilisés.

données d'instance pour une classe java

Ansible utilise des playbooks basés sur YAML qui peuvent même être compris par un débutant. Il utilise une architecture sans agent pour communiquer avec ses clients qui n'implique aucun outil tiers à installer sur la machine du client, et utilise à la place des connexions basées sur SSH. Ansible étant un outil d'automatisation, découvrons ce qu'il peut automatiser.

Que peut Ansible automatiser?

Nommez une étape du cycle de développement et Ansible vous y aidera, que ce soit la gestion de la configuration, l'approvisionnement, l'orchestration, la livraison continue, la sécurité ou même le déploiement d'applications. Ansible unit le flux de travail du cycle de développement en une plate-forme d'automatisation sans agent unique.



  1. Approvisionnement: Il est nécessaire de créer un environnement adapté pour que l'application / le logiciel fonctionne. Ansible fournit un moyen d'automatiser l'environnement créé pour l'existence de l'application.
  2. Gestion de la configuration: Effectuer une grande variété de tâches de configuration, telles que démarrer / arrêter des services, modifier la configuration d'un système, d'un appareil ou d'une application, etc.
  3. Déploiement d'application: Automatisez la définition du déploiement avec Ansible et gérez le déploiement à l'aide Tour d'Ansible . Cela rend l'ensemble du cycle d'application, de la production au déploiement, efficace et gérable.
  4. Livraison continue: Créer et gérer un pipeline d'intégration continue / de livraison continue peut devenir fastidieux. C'est là qu'Ansible intervient et facilite la vie des développeurs.
  5. Sécurité et conformité: Travailler avec les projets, définit toujours des limites et est intégré aux politiques de sécurité de l'entreprise. L'intégration automatique des politiques de sécurité avec le déploiement peut faciliter le respect des politiques.
  6. Orchestration: Un projet entier est une collection de nombreuses instances différentes ayant une configuration différente. Ansible fusionne et gère ces différentes instances dans leur ensemble.

Besoin de provisionnement Ansible

Comme mentionné précédemment, la première étape pourautomatiser le cycle de vie opérationnel des applicationsprépare l'environnement, c'est-à-dire le provisionnement. Les déploiements volumineux nécessitent plusieurs hôtes ayant exactement les mêmes configurations. Après avoir provisionné un hôte, quelles sont les chances que les 10 prochains hôtes aient exactement les mêmes configurations si cela est fait manuellement? Combien de temps passerez-vous également à faire la même tâche répétitive? C'est là qu'Ansible vient à notre service. Vous pouvez provisionner des centaines d'hôtes simplement en exécutant un seul playbook. La magie? Haha! Non, juste une évolution de l'automatisation.

Démo: créer une pile de LAMP et déployer une page Web

Supposons que vous essayez de déployer un site Web sur 30 systèmes, chaque déploiement de site Web nécessitera un système d'exploitation de base, un serveur Web, une base de données et PHP. Nous utilisons un playbook ansible pour installer ces pré-requis sur les 30 systèmes à la fois.

Dans cette démonstration de provisionnement Ansible, je vais vous montrer comment provisionner l'environnement d'hébergement de site Web à l'aide d'Ansible. Nous installons la pile LAMP (Linux, Apache, MySQL et PHP) puis déployons un site Web.

Pour cette démo, j’ai utilisé une VirtualBox Linux avec Ubuntu version 17.04. J'ai utilisé deux machines virtuelles, l'une en tant que serveur sur lequel Ansible est installé et l'autre en tant qu'hôte distant. Commençons par configurer Ansible sur le serveur.

J'ai créé une simple page Web statique enregistrée dans un dossier indice qui a deux fichiers, index.html et style.css.

index.html:

  Site Web utilisant HTML et CSS                Adoptez maintenant        

style.css

* { marge: 0 rembourrage: 0 } entête { image de fond: gradient linéaire (rgba (0,0,0,0.5), rgba (0,0,0,0.5)), url ('puppie.jpg') hauteur: 100vh background-size: couverture background-position: centre } .nav-menu { Flotter à droite style liste: aucun marge supérieure: 30px } .nav-menu li { affichage: bloc en ligne } .nav-menu li a { couleur: turquoise texte-décoration: aucun rembourrage: 5px 20px font-family:'Verdana', 'sans-serif' taille de la police: 20px } .homebtn a { bordure: 1px gris uni couleur de fond: blanc } .nav-menu li a: hover { bordure: 1px gris uni couleur de fond: blanc } .tagline { position: absolue largeur: 1200px marge gauche: 0 margin-top: 0 } h1 { Couleur blanche taille de la police: 50px font-family:'Verdana', 'sans-serif' text-align: centre marge supérieure: 275px } .adopt { marge supérieure: 30 px marge gauche: 540 px } .bttn { bordure: 1px blanc uni rembourrage: 10px 30px Couleur jaune font-family:'Verdana', 'sans-serif' taille de la police: 22px texte-décoration: aucun } .adoptez un: hover { couleur de fond: burlywood }

Étape 1: Exécutez les commandes suivantes pour mettre à jour les référentiels, ajouter les référentiels requis et configurer PPA sur votre machine pour l'installation d'Ansible:

$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa: ansible / ansible

Appuyez sur Entrée pour accepter l'ajout de PPA, puis installez enfin Ansible après la mise à jour des référentiels.

$ sudo apt-get update $ sudo apt-get install ansible

Étape 2: Accédez au fichier / etc / hosts de votre serveur et ajoutez le nom d'hôte et l'adresse IP de l'hôte.

etc hosts - Provisioning Ansible - EdurekaFig.1 - Ajouter des hôtes distants au fichier / etc / hosts - Ansible Provisioning

Étape 3: Comme Ansible travaille sur l'architecture sans agent d'utilisation de SSH pour communiquer avec ses hôtes, configurez les clés ssh. Fondamentalement, nous avons un serveur et un hôte. Nous contrôlons l'hôte avec notre serveur et par conséquent nous créons une clé ssh publique sur le serveur et la copions dans la machine de l'hôte. Exécutez la commande suivante sur le serveur:

$ ssh-keygen

Vous serez invité à entrer le nom du fichierOù jevous souhaitez enregistrer votre clé et vous inviter également à créer un mot de passe pour accéder à la clé générée, ce qui est facultatif. Par défaut, la clé publique est enregistrée dans le fichier .ssh / id_rsa.pub et la clé privée est enregistrée dans .ssh / id_rsa.

Fig.2 - Créer une clé ssh - Provisioning Ansible

Maintenant, cette clé générée doit être présente dans votre hôte. La copie de la clé dans l'hôte peut être effectuée de deux manières, soit manuellement copier dans l'hôte, soit utiliser la commande ssh-copy-id. Dans ce cas, je vais le copier en utilisant la commande ssh-copy-id root @ IP_of_host.

$ ssh-copy-id root@192.168.56.104

Remarque - Assurez-vous que vous êtes en mesure de ssh dans votre hôte avant d'exécuter cette commande.

Étape 4: Configurez les hôtes Ansible. Accédez au fichier / etc / ansible / hosts et ajoutez le nom d'hôte. Cela variera en fonction du nombre d'hôtes et de serveurs dont vous disposez. Vous pouvez également avoir plus deun serveurIci.

Fig.3 - Ajouter des hôtes distants dans le fichier d'inventaire - Ansible Provisioning

Étape 5: Vérifiez si vos hôtes sont prêts. Exécutez cette commande, vous devriez obtenir une sortie similaire.

$ ansible -m ping tous

Fig.4 - Vérifier l'état de l'hôte distant - Provisioning Ansible

Étape 6: Maintenant que notre Ansible est prêt, préparons l'environnement pour déployer un site Web. Nous allons utiliser un seul playbook Ansible pour installer Apache, MySql et PHP. Jetons un coup d’œil.

Remarque: si vous êtes débutant, jetez un œil à cette blog qui explique comment écrire un playbook.

--- # Setup LAMP Stack - hosts: host1 tasks: - name: Ajouter un référentiel ppa devenu: oui apt_repository: repo = ppa: ondrej / php - name: Installer la pile de lampes devenir: oui apt: pkg: - apache2 - mysql-server - php7.0 - php7.0-mysql état: présent cache de mise à jour: oui - nom: démarrer le serveur apache devenir: oui service: nom: apache2 état: démarré activé: oui - nom: démarrer le service mysql devenir: oui services: nom: état mysql: démarré activé: oui - nom: créer le fichier du répertoire cible: chemin = / var / www / html état = mode répertoire = 0755 - nom: deploy index.html est devenu: oui copie: src: / etc / ansible / index / index.html dest: var / www / html / index / index.html

Ici comme vous pouvez le voir, nous avons 6 tâches, chaque tâche remplit une fonction spécifique.

  • La première tâche ajoute le référentiel requis pour installer MySQL et PHP.
  • La deuxième tâche installe apache2, serveur MySQL, PHP et PHP-MySQL.
  • La troisième et la quatrième tâche démarre le service Apache et MySQL.
  • La cinquième tâche crée un répertoire cible dans la machine hôte et
  • Enfin, la sixième tâche exécute le fichier index.html, elle récupère le fichier sur la machine serveur et le copie dans la machine hôte.

Exécutez ce playbook avec la commande suivante:

$ ansible-playbook lamp.yml -K

Les lignes devenir: oui dans le playbook indique qu'il doit s'exécuter en tant que root et, par conséquent, lorsque vous exécutez la commande, il vous demandera le mot de passe sudo.

Fig.5 - Exécuter Ansible Playbook - Ansible Provisioning

Vous pouvez maintenant accéder à la machine hôte et vérifier si le site Web a été hébergé.

Fig.6 - Héberger le site Web sur Localhost - Ansible Provisioning

Maintenant, c'est une page Web qui serait déployée dans tous les hôtes qui interagissent avec le serveur (dans notre cas, nous n'avions qu'un seul hôte) mais la même chose serait possible même pour 100 hôtes distants.

Cela nous amène à la fin du blog Ansible Provisioning. Si vous trouvez cet article utile, consultez le ' proposé par Edureka. Il couvre tous les outils qui ont rendu l'industrie informatique plus intelligente.

Vous avez une question pour nous? Veuillez le publier sur et nous reviendrons vers vous.