Ansible Roles - Un moyen ultime de démêler vos playbooks



Ce blog Ansible Roles explique comment les rôles sont utilisés pour rendre des playbooks complexes lisibles et réutilisables avec une démonstration de la configuration d'une pile MEAN.

Ansible nous permet d'automatiser la gestion de la configuration des systèmes et d'ajouter autant de clients que nous le souhaitons. Vous êtes-vous déjà demandé à quel point cela peut devenir complexe? Vous êtes-vous déjà demandé combien de temps et de confusion les playbooks peuvent durer? Comment Ansible fait-il encore sembler un jeu d'enfant? Il utilise le concept des rôles Ansible et c'est ce dont nous allons parler dans ce blog.

Sujets couverts:





java créer un tableau d'objets

Si vous souhaitez maîtriser DevOps, ' cours serait votre option préférée.

Introduction aux rôles Ansible

Ansible Role est un concept qui traite des idées plutôt que des événements. C'est fondamentalement un autre niveau d'abstraction utilisé pour organiser les playbooks. Ils fournissent un squelette pour une collection indépendante et réutilisable de variables, tâches, modèles, fichiers et modules qui peuvent être automatiquement chargés dans le playbook. Les playbooks sont une collection de rôles. Chaque rôle a des fonctionnalités spécifiques.



Laissez-moi vous expliquer cela avec un exemple. Supposons que vous souhaitiez que votre playbook effectue 10 tâches différentes sur 5 systèmes différents, utiliseriez-vous un seul playbook pour cela? Non, l'utilisation d'un seul livre de jeu peut le rendre déroutant et sujet aux erreurs. Au lieu de cela, vous pouvez créer 10 rôles différents, où chaque rôle exécutera une tâche. Ensuite, tout ce que vous avez à faire est de mentionner le nom du rôle dans le livre de jeu pour les appeler. Vous apprendrez à utiliser davantage les rôles dans ce blog.

Réutilisabilité des rôles Ansible

Les rôles Ansible sont indépendants les uns des autres. L’exécution d’un rôle ne dépend pas des autres et peut donc être réutilisée. Vous pouvez même modifier et personnaliser ces rôles en fonction de vos besoins. Cela réduit notre tâche de réécrire une section entière de code chaque fois que nous en avons besoin, simplifiant ainsi notre travail.

Revenons à l'exemple précédent. Vous avez écrit 10 rôles et vous devez maintenant en utiliser 5 pour un autre ensemble de provisioning. Réécrivez-vous le livre de jeu entier? Non, il vous suffit de réutiliser ces 5 rôles en les appelant dans ce nouveau Playbook. Vous pouvez également apporter des modifications si nécessaire, mais cela finirait par gagner beaucoup de temps.



Supposons que vous deviez rédiger un playbook pour configurer la pile LAMP. Vous devez créer 4 rôles, chacun pour créer Linux, Apache, MongoDB et PHP. À l'avenir, si vous voulez un autre playbook pour configurer la pile LAMP ainsi que WordPress, créerez-vous à nouveau de nouveaux rôles pour la pile LAMP et WordPress? Non! Vous pouvez simplement réutiliser les anciens rôles (utilisés pour la pile LAMP) et créer en plus un nouveau rôle pour WordPress.

Structure du répertoire des rôles

En utilisant les rôles Ansible, attendez-vous à ce que les fichiers soient dans une certaine structure de fichiers. La partie la plus déroutante de l'utilisation des rôles est la compréhension de la hiérarchie des fichiers. Ansible fournit une fonctionnalité appelée Ansible Galaxy qui vous aide à jouer avec des rôles. Nous savons déjà où se trouve notre Ansible sur Ubuntu (/ etc / ansible). Avez-vous déjà vu un répertoire appelé roles sous / etc / ansible? Ce répertoire existe exactement pour cette raison. Vous créez différents rôles dans ce répertoire.

Le répertoire ressemblera à ceci:

Arbre - Rôles Ansible - Edureka

Vous pouvez créer un rôle en utilisant galaxie-ansible commande init dans / etc / ansible / roles.

$sudoansible-galaxy init

Vous verrez que d'autres répertoires de rôles auraient également été créés.

Ces répertoires sont des tâches, des gestionnaires, des valeurs par défaut, des variables, des fichiers, des modèles et meta et un README.Marylandfichier.

Tâches - Contient la liste principale des tâches qui doivent être exécutées par le rôle. Ilcontientle fichier main.yml pour ce rôle particulier.

Manutentionnaires - Contient des gestionnaires qui peuvent être utilisés par ce rôle ou même n'importe où en dehors de ce rôle.

Par défaut - Contient les variables par défaut qui seront utilisées par ce rôle.

Dont - Ce répertoire se compose d'autres variables qui seront utilisées par le rôle. Ces variables peuvent être définies dans votre playbook, mais c'est une bonne habitude de les définir dans cette section.

Des dossiers - Contient des fichiers qui peuvent être déployés par ce rôle. Il contient des fichiers qui doivent être envoyés aux hôtes lors de la configuration du rôle.

Meta - Définit les métadonnées pour ce rôle. Fondamentalement, il contient des fichiers qui établissent des dépendances de rôle.

Chaque tâche le répertoire doit être composé d'un main.yml fichier dans lequel le code réel de ce rôle particulier est écrit.

Voyons maintenant le fonctionnement ou les rôles avec une démonstration de l'installation de MEAN Stack.

Démo: installation de MEAN Stack à l'aide de rôles Ansible

Je vais vous montrer comment installer MEAN Stack à l'aide d'Ansible Roles en exécutant simplement un seul playbook. Nous allons avoir trois rôles: 1) Installer les prérequis, 2) Installer MongoDB et 3) Installer NodeJS. Je suppose que vous avez déjà installé Ansible et établi une connexion serveur-client sur Ubuntu . Commençons à jouer avec les rôles Ansible.

Étape 1 - Accédez au répertoire / etc / ansible / roles et créez les rôles pour les prérequis, MongoDB et NodeJS.

$ cd / etc / ansible / roles $ sudo ansible-galaxy init prérequis $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Vous devriez maintenant voir trois rôles dans votre répertoire 'roles'.

Étape 2 - Ecrivez main.yml pour les prérequis qui installe Git.

$ cd prerequisites / tasks / main.yml --- - nom: Installez git apt: nom: git état: présent update_cache: oui

Étape 3 - Ecrire main.yml pour le rôle MongoDB

$ cd /mongodb/tasks/main.yml --- - nom: MongoDB - Importer la clé publique apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - nom: MongoDB - Ajouter un référentiel apt_repository: filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' état: présent update_cache : yes - name: MongoDB - Install MongoDB apt: name: mongodb-org state: present update_cache: yes - name: Démarrer le shell mongod: 'mongod &'

Étape 4 - Ecrivez main.yml pournodejsrôle

$ cd nodejs / tasks / main.yml --- - nom: Node.js - Récupère le script get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- nom: Node.js - Définit l'autorisation d'exécution sur le fichier script: chemin:' {{var_node}}} / nodejs.sh 'mode:' u + x '- nom: Node.js - Exécute le shell du script d'installation:' {{var_node}} / nodejs.sh '- nom: Node.js - Supprimer le fichier de script d'installation: chemin:' {{var_node}} / nodejs.sh 'état: absent - nom: Node.js - Installer Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Installer bower et gulp globalement npm: name = {{item}} state = present global = yes with_items : - bower - avaler

Étape 5 - Rédigez votre playbook principal

$ cd / etc.

Maintenant que nous avons défini les rôles pour l'installation des prérequis, MongoDB et NodeJs, déployons-les. Exécutez le playbook à l'aide de la commande suivante.

$sudoansible-playbook /etc/ansible/mean.yml -K

créer un paramètre dans le tableau

Comme vous pouvez le voir, toutes les tâches ont été exécutées et leur statut a changé. Cela signifie que les modifications du playbook ont ​​été appliquées à votre serveur ainsi qu'à l'hôte. La configuration de MEAN Stack n'est qu'un exemple. Vous pouvez configurer tout et n'importe quoi à l'aide des rôles Ansible.

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

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