Tutoriel Ansible - Apprenez à écrire des playbooks Ansible



Dans ce blog du didacticiel Ansible, vous apprendrez à écrire des playbooks Ansible, des commandes adhoc et à effectuer des travaux pratiques pour déployer Nginx sur votre machine hôte.

Tutoriel Ansible

J'espère que vous avez parcouru mon blog précédent pour apprendre et les terminologies les plus utilisées d'Ansible. Dans le cas où vous ne l'auriez pas fait, veuillez le vérifier afin de mieux comprendre ce didacticiel Ansible.Vous devez également savoir qu'Ansible constitue une partie cruciale de comme outil de gestion de configuration, de déploiement et d'orchestration.

Permettez-moi de vous donner un aperçu de ce «Tutoriel Ansible»:





Tutoriel Ansible Playbook | Formation DevOps | Edureka

Tutoriel Ansible - Écrire des playbooks Ansible

Les playbooks dans Ansible sont écrits au format YAML. Il s'agit d'un langage de sérialisation de données lisible par l'homme. Il est couramment utilisé pour les fichiers de configuration. Il peut également être utilisé dans de nombreuses applications où des données sont stockées.



Pour Ansible, presque tous les fichiers YAML commencent par une liste. Chaque élément de la liste est une liste de paires clé / valeur, communément appelée «hachage» ou «dictionnaire». Nous devons donc savoir comment écrire des listes et des dictionnaires en YAML.

Tous les membres d'une liste sont des lignes commençant au même niveau d'indentation commençant par un «-» (tiret et espace). Des structures de données plus compliquées sont possibles, telles que des listes de dictionnaires ou des dictionnaires mixtes dont les valeurs sont des listes ou un mélange des deux.

par exemple. Pour une liste des départements dans edureka:



départements: - marketing - ventes - solutions - rédaction de contenu - support - produit

Maintenant, laissez-moi vous donner un exemple de dictionnaire:

-É-U -Continent: Amérique du Nord -capitale: Washington DC -population: 319 millions

Hôtes et utilisateurs:

Pour chaque jeu dans un playbook, vous pouvez choisir les machines de votre infrastructure à cibler et l'utilisateur distant pour effectuer les tâches. Pour inclure les hôtes dans l'inventaire Ansible, nous utiliserons les adresses IP des machines hôtes.

En général, les hôtes sont une liste d'un ou plusieurs groupes ou modèles d'hôtes, séparés par des deux-points. L'utilisateur distant est simplement le nom du compte utilisateur.

Variables:

Ansible utilise des variables définies précédemment pour permettre plus de flexibilité dans les playbooks et les rôles. Ils peuvent être utilisés pour parcourir un ensemble de valeurs données, accéder à diverses informations comme le nom d'hôte d'un système et remplacer certaines chaînes de modèles par des valeurs spécifiques.

Ansible définit déjà un riche ensemble de variables, individuelles pour chaque système. Chaque fois qu'Ansible s'exécute sur un système, tous les faits et informations sur le système sont rassemblés et définis en tant que variables.

Mais il y a un règle pour nommer les variables. Les noms de variables doivent être des lettres, des chiffres et des traits de soulignement. Les variables doivent toujours commencer par une lettre. Par exemple. wamp_21, port5 sont des noms de variables valides, alors que 01_port, _server ne sont pas valides.

Tâches:

Les tâches vous permettent de diviser des éléments de stratégie de configuration en fichiers plus petits. La tâche comprend l'extraction d'autres fichiers. Les tâches dans Ansible vont avec à peu près le sens anglais de celui-ci.

Par exemple: installer, mettre à jour, etc.

Manutentionnaires:

Les gestionnaires sont comme les tâches régulières dans un playbook Ansible, mais ne sont exécutés que si la tâche contient une directive de notification et indique également qu'elle a changé quelque chose. Par exemple, si un fichier de configuration est modifié, la tâche référençant le fichier de configuration peut notifier un gestionnaire de redémarrage de service.

Laissez-moi vous donner un exemple de playbook qui lancera le programme serveur Apache httpd:

----hôtes: serveurs web dont: http_port: 80 les clients de Max: 200 remote_user: racine Tâches: - Nom: assurez-vous qu'apache est à la dernière version Miam: name = état httpd = dernier - Nom: écrire le fichier de configuration apache modèle: src = / srv / httpd.j2 dest = / etc / httpd.conf notifier: - redémarrer apache - Nom: assurez-vous qu'apache est en cours d'exécution (et activez-le au démarrage) un service: name = httpd état = démarré activé = oui manutentionnaires: - Nom: redémarrer apache un service: name = état httpd = redémarré

J'espère que l'exemple vous rapportera à toute la description des composants du playbook que j'ai mentionnés ci-dessus. Si ce n'est toujours pas clair pour vous, ne vous inquiétez pas, tous vos doutes seront clairs dans la dernière partie de ce blog.

Tout est question de playbooks. Les playbooks qui seront écrits par vous. Mais Ansible vous propose également une large gamme de modules, que vous pouvez utiliser.

Tutoriel Ansible - Modules

Les modules d'Ansible sont idempotents. Du point de vue du service RESTful, pour qu'une opération (ou un appel de service) soit idempotente, les clients peuvent effectuer le même appel à plusieurs reprises tout en produisant le même résultat. En d'autres termes, faire plusieurs demandes identiques a le même effet que faire une seule demande.

Il existe différents types de modules dans Ansible

  • Modules de base
  • modules extras

Modules de base

Ce sont des modules que l'équipe principale d'Ansible maintient et seront toujours livrés avec Ansible lui-même. Ils recevront également une priorité légèrement plus élevée pour toutes les demandes que celles des dépôts «extras».

La source de ces modules est hébergée par Ansible sur GitHub dans Ansible-modules-core.

Modules Extras

Ces modules sont actuellement livrés avec Ansible, mais pourraient être livrés séparément à l'avenir. Ils sont également principalement maintenus par la communauté Ansible. Les modules non essentiels sont toujours pleinement utilisables, mais peuvent recevoir des taux de réponse légèrement inférieurs pour les problèmes et les demandes d'extraction.

Les modules «extras» populaires peuvent être promus en modules de base au fil du temps.

La source de ces modules est hébergée par Ansible sur GitHub dans le fichier Ansible-modules-extras.

Par exemple: l'un des modules supplémentaires des modules de gestion à distance est le module ipmi_power, qui est un gestionnaire d'alimentation pour les machines distantes. Il nécessite python 2.6 ou version ultérieure et pyghmi pour fonctionner.

Vous pouvez utiliser ce module en écrivant une commande adhoc comme celle que j'ai écrite ci-dessous:

ipmi_power: name = 'test.domain.com' user = 'localhost' password = 'xyz' state = 'on'

Tutoriel Ansible - Valeurs de retour

Les modules Ansible renvoient normalement une structure de données qui peut être enregistrée dans une variable, ou vue directement lors de la sortie par le programme Ansible. Chaque module peut éventuellement documenter ses propres valeurs de retour uniques.

c ++ trier un tableau

Quelques exemples de valeurs de retour sont:

  • changé: retourne avec une valeur booléenne chaque fois que la tâche effectue un changement.
  • failed: renvoie une valeur booléenne, si la tâche échoue
  • msg: il retourne une chaîne avec un message générique relayé à l'utilisateur.

Tutoriel Ansible - Commandes AdHoc

Les commandes ad hoc sont des commandes simples d'une seule ligne pour effectuer une action. Les modules exécutés avec des commandes Ansible sont des commandes adhoc.

Par exemple:

hôte ansible -m netscaler -a 'nsc_host = nsc.example.com user = apiuser password = apipass' 

La commande adhoc ci-dessus utilise le module netscaler pour désactiver le serveur. Il existe des centaines de modules disponibles dans Ansible à partir desquels vous pouvez vous référer et écrire des commandes adhoc.

Eh bien, assez avec toutes les explications théoriques, laissez-moi vous expliquer Ansible avec quelques pratiques.

Tutoriel Ansible - Pratique

Je vais écrire un playbook pour installer Nginx sur mon nœud / machine hôte.

Commençons :)

Étape 1: Connectez-vous à vos hôtes en utilisant SSH. Pour cela, vous devez générer une clé SSH publique.

Utilisez la commande ci-dessous:

ssh-keygen

Générer une clé Ssh - Tutoriel Ansible - Edureka

Comme vous pouvez le voir dans l'instantané ci-dessus, la commande ssh-keygen a généré une clé SSH publique.

Étape 2: Votre prochaine tâche consiste à copier la clé SSH publique sur vos hôtes. Pour ce faire, utilisez la commande ci-dessous:

ssh-copy-id -i racine @

L'instantané ci-dessus montre la clé SSH en cours de copie sur les hôtes.

Étape 3: Répertoriez les adresses IP de vos hôtes / nœuds dans votre inventaire.

Utilisez la commande suivante:

vi / etc / ansible / hosts

hashmap vs hashtable en java

Cela ouvrira un éditeur vi où vous pourrez lister les adresses IP de vos hôtes. Ceci est maintenant votre inventaire.

Étape 4: Faites un ping pour vous assurer qu’une connexion a été établie.

L'instantané ci-dessus confirme que la connexion a été établie entre votre machine de contrôle et l'hôte.

Étape 5: Écrivons maintenant un playbook pour installer Nginx sur la machine hôte. Vous pouvez écrire votre playbook dans l'éditeur vi. Pour cela, créez simplement votre playbook, en utilisant la commande:

vi

L'image ci-dessous montre mon playbook pour installer Nginx écrit au format YAML.

Les tâches d'un playbook sont définies dans YAML comme une liste de dictionnaires et exécutées de haut en bas. Si nous avons plusieurs hôtes, chaque tâche est essayée pour chaque hôte avant de passer à la suivante. Chaque tâche est définie comme un dictionnaire qui peut avoir plusieurs clés, telles que «nom» ou «sudo» qui signifient le nom de la tâche et si elle nécessite des privilèges sudo.

Une variable port de serveur est défini qui écoute sur le port TCP 8080 pour les demandes entrantes.

Ici, la première tâche consiste à obtenir le package nécessaire à l'installation de Nginx, puis à l'installer.En interne, Ansible vérifie si le répertoire existe et le crée si ce n’est pas le cas, sinon il ne fera rien.

La tâche suivante consiste à configurer Nginx.Dans Nginx, les contextes contiennent des détails de configuration.

Ici, le modèle est un fichier que vous pouvez déployer sur les hôtes. Cependant, les fichiers modèles incluent également des variables de référence qui sont extraites de variables définies dans le cadre d'un playbook Ansible ou de faits collectés auprès des hôtes. Les faits contenant les détails de configuration sont extraits d'un répertoire source et copiés dans un répertoire de destination.

Les gestionnaires définissent ici l'action à effectuer uniquement lors de la notification des tâches ou des changements d'état. Dans ce playbook, nous avons défini, notifier: redémarrer le gestionnaire Nginx qui redémarrera Nginx une fois que les fichiers et les modèles seront copiés sur les hôtes.

Maintenant, enregistrez le fichier et quittez.

Étape 6: Maintenant, exécutons ce playbook, en utilisant la commande ci-dessous:

ansible-playbook .yml

Nous pouvons voir dans la capture d'écran ci-dessus que notre tâche consiste à exécuter Nginx en cours d'installation.

Étape 7: Vérifions si Nginx est installé sur ma machine hôte. Utilisez la commande ci-dessous:

ps waux | grep nginx

Vous pouvez voir dans la capture d'écran ci-dessus, que différents identifiants de processus 3555 et 103316 sont en cours d'exécution, ce qui garantit que Nginx fonctionne sur vos machines hôtes.

Toutes nos félicitations! Vous avez déployé avec succès Nginx sur votre hôte à l'aide de playbooks Ansible. J'espère que vous avez apprécié la lecture de ce blog du tutoriel Ansible. S'il vous plaît laissez-moi savoir si vous avez des questions dans la section commentaires ci-dessous.

Si vous avez trouvé ceci ' Tutoriel Ansible 'Pertinent, Vérifiez par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation à la certification Edureka DevOps aide les apprenants à acquérir une expertise dans divers processus et outils DevOps tels que Puppet, Jenkins, Ansible, Nagios et Git pour automatiser plusieurs étapes dans SDLC.