Comment créer des modèles dans ANSIBLE de créer des configurations sur les nœuds gérés - partie 7
- 2087
- 125
- Thomas Richard
Dans ce Partie 7 de la série ANSIBLE, vous apprendrez à créer et à utiliser des modèles dans ANSIBLE pour créer des configurations personnalisées sur les nœuds gérés. Les modèles dans ANSIBLE sont un moyen facile et convivial de pousser les configurations personnalisées aux nœuds gérés exécutant différents systèmes avec un montage minimal des fichiers Playbook.
Qu'est-ce que les modèles dans ANSIBLE?
Pour mieux comprendre ce qu'est un modèle, considérons un gestionnaire informatique rédigeant un e-mail pour inviter son service à un cocktail. L'e-mail est envoyé à chacun des membres et les invite également à étiqueter avec leurs conjoints.
L'e-mail a été personnalisé de telle sorte que le corps de l'e-mail reste le même, mais les adresses et les noms de leurs conjoints respectifs varient. L'e-mail devient le modèle, tandis que les destinataires et les conjoints respectifs sont variables.
C'était un exemple générique. Utilisations anibles Jinja2 qui est un moteur de modèles moderne pour les frameworks Python utilisés pour générer du contenu ou des expressions dynamiques. Les modèles sont extrêmement utiles lors de la création de fichiers de configuration personnalisés pour plusieurs serveurs mais unique pour chacun d'eux.
Jinja2 utilise les accolades à double boucle …
pour enfermer une variable qui a été définie. Pour commentaires, utilisez # #
et pour les déclarations conditionnelles %…%
.
Supposons que vous avez un modèle de données de Vlans dans votre réseau avec des systèmes hôtes que vous souhaitez pousser à leur Vlans comme montré.
VLANS: - ID: 10 Nom: LB - ID: 20 Nom: WB_01 - ID: 30 Nom: WB_02 - ID: 40 Nom: DB
Pour rendre cette configuration, le correspondant Jinja2 modèle appelé vlans.j2 apparaîtrait comme indiqué. Comme vous pouvez le voir, les variables vlan.identifiant et vlan.nom ont été enfermés en accolades bouclées.
vlan Vlan.id nom Vlan.nom
Le tout ensemble dans un livre de jeu qui place différentes machines hôtes, cela apparaîtrait comme indiqué:
- Hôtes Tâches: - Nom: Rendu Modèle de configuration VLAN: SRC: VLANS.J2 dest: "vlan_configs / inventory_hostname.conf
Exemple 1: Configuration des serveurs Web dans différentes distributions
Dans cet exemple, nous créerons indice.html des fichiers qui affichent des informations sur le nom d'hôte et le système d'exploitation de 2 serveurs Web en cours d'exécution Centos et Ubuntu.
Installation
Ubuntu 18 - Adresse IP: 173.82.202.239 Centos 7 - Adresse IP: 173.82.115.165
Apache Webserver a déjà été installé sur les deux serveurs.
Pour les centos 7
Page Web Apache sur Centos 7Pour Ubuntu 18.04
Page Web Apache sur Ubuntu 18.04Alors créons un livre de jeu test_server.YML comme montré:
--- - Hôtes: Tous deviennent: Oui Tâches: - Nom: Installer Index.Modèle HTML: SRC: Index.html.J2 dest: / var / www / html / index.Mode HTML: 0777
Notre Jinja Le modèle de fichier est indice.html.j2 qui sera poussé au indice.html fichier sur chaque serveur Web. N'oubliez pas de mettre l'extension .j2
à la fin pour signifier qu'il s'agit d'un fichier Jinja2.
Créons maintenant le fichier de modèle indice.html.j2.
Le nom d'hôte de ce serveur Web est anible_hostname
Il fonctionne sur ANSIBLE_OS_FAMILY Système
Ce modèle est un fichier HTML de base où le ANSIBLE_HOSTNAME et anible_os_family sont des variables intégrées qui seront remplacées par les noms d'hôtes et les systèmes d'exploitation respectifs des serveurs individuels sur le navigateur.
Maintenant, exécutons le livre de jeu.
# anible-playbook test_server.YMLCréer un fichier de modèle ANSIBLE
Maintenant, rechargeons les pages Web pour les deux Centos 7 et Ubuntu serveurs Web.
Pour les centos 7
Vérifiez la page Web Apache sur Centos 7Pour Ubuntu 18.04
Vérifiez la page Web Apache sur Ubuntu 18.04Comme vous pouvez le voir, différentes informations sur le nom d'hôte et la famille du système d'exploitation ont été affichées sur chaque serveur. Et c'est comme ça cool Jinja2 Les modèles sont!
Filtres:
Parfois, vous pouvez décider de remplacer la valeur d'une variable avec une chaîne qui apparaît d'une certaine manière.
Exemple 1: Faites apparaître les chaînes en majuscules / minuscules
Par exemple, dans l'exemple précédent, nous pouvons décider de faire apparaître les variables anibles en majuscules. Pour ce faire, ajoutez la valeur supérieure à la variable. De cette façon, la valeur de la variable est convertie au format majuscule.
anible_hostname | Upper => Centos 7 ANSIBLE_OS_FAMILY | supérieur => redhatFaire de la chaîne en majuscule
De même, vous pouvez convertir la sortie de la chaîne en minuscules en ajoutant l'argument inférieur.
anible_hostname | inférieur => centos 7 anible_os_family | inférieur => redhatFaire des cordes en minuscules
Exemple 2: remplacez une chaîne par une autre
De plus, vous pouvez remplacer une chaîne par un autre.
Par exemple:
Le titre du film est film_name =>
Le titre du film est Anneau.
Pour remplacer la sortie par une autre chaîne, utilisez l'argument de remplacement comme indiqué:
Le titre du film est film_name | remplacer («ring», «cambriolage») =>
Le titre du film est Cambriolage.
Exemple 3: répertorie et définit les filtres
Pour récupérer la plus petite valeur dans un tableau, utilisez le min filtre.
[2, 3, 4, 5, 6, 7] | min => 2
De même, pour récupérer le plus grand nombre, utilisez le max filtre.
[2, 3, 4, 5, 6, 7] | max => 7
Pour afficher des valeurs uniques, utilisez le unique filtre.
[2, 3, 3, 2, 6, 7] | unique => 2, 3
Utilisez le aléatoire filtre pour obtenir un nombre aléatoire entre 0 et la valeur.
50 | aléatoire => un nombre aléatoire
BOUCLES:
Tout comme dans les langages de programmation, nous avons boucles dans la Jinja2.
Par exemple, pour générer un fichier contenant une liste de nombres, utilisez le pour boucle Comme indiqué dans l'exemple ci-dessous:
Exemple 1:
% pour le nombre dans [0, 1, 2, 3, 4, 5, 6, 7]% nombre % fin pour%
Vous pouvez également combiner la boucle pour sinon déclarations pour filtrer et obtenir certaines valeurs.
Exemple 2:
% pour le nombre dans [0, 1, 2, 3, 4, 5, 6, 7]% % if Number == 5% nombre % endif% % end pour%
Et c'est tout pour cette conférence. Rejoignez-nous dans le sujet suivant où nous nous avendrons pour travailler avec des variables et des faits anibles.
- « Comment installer nginx sur centos 8
- Comment utiliser des modules anibles pour les tâches d'administration du système - Partie 6 »