GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment utiliser le modèle Jinja2 dans Ansible

Jinja2 est l'un des moteurs de modèles basés sur Python les plus puissants et les plus connus. Il est le plus populaire pour les utilisateurs d'Ansible en raison du même langage de programmation. Cela aide beaucoup de personnel informatique à bien des égards. Le modèle Jinja2 est capable d'accéder aux variables dans ansible. Dans Ansible, il faut changer pas mal de choses sur chaque serveur ce qui consomme beaucoup de temps. Ainsi, en utilisant les modèles jinja2, on ne peut modifier les variables que pour ce modèle, ce qui permet de gagner beaucoup de temps et de créer un environnement simple.

Dans ansible, un modèle jinja2 est utilisé pour accéder aux variables. Donc, changer la variable selon les besoins à la fois peut aider les playbooks ansibles à gagner beaucoup de temps. Le modèle Jinja2 est livré avec des filtres intégrés, et les utilisateurs ne peuvent manipuler ces filtres que lors de la configuration de nombreux fichiers pour les playbooks fluides.

Il a de nombreuses autres fonctionnalités. Certains d'entre eux sont énumérés ci-dessous.

  • C'est assez simple à des fins de débogage
  • L'héritage de modèle est bien pris en charge
  • C'est très rapide et facile à compiler

Dans cet article, nous allons discuter des utilisations du modèle jinja2 et du processus pour le configurer.

Variables accessibles par le modèle Jinja2

Le modèle Jinja2 peut accéder aux variables dans ansible. Sur un nœud de contrôle ansible, écrivez un fichier de modèle jinja2 qui peut facilement accéder aux variables définies dans le même répertoire ou dans le playbook.

Nous allons écrire un exemple qui montre le modèle jinja2 accédant et manipulant les valeurs en accédant aux variables. Ici, le playbook est jinja2_var_example.yml

Maintenant, exécutons le playbook jinja2_var_example.yml

Ici, vous pouvez remarquer que la valeur est modifiée sur la sortie. Comme {{ }} est également une syntaxe du modèle jinja2, il peut accéder à la variable et remplacer la valeur par la valeur réelle.

Un autre exemple montrant le modèle jinja2 accédant à la variable. Ici, nous allons créer un dossier puis écrire un modèle jinja2 "nginx.conf.j2" car j2 est l'extension du modèle jinja2.

$ mkdir jinja2_variable
$ cd jinja2_variable/
$ vim nginx.conf.j2

Ensuite, nous allons écrire un fichier en utilisant le modèle jinja2 où les variables sont utilisées. Ces variables peuvent être définies sur différents fichiers ou sur des playbooks qui peuvent être manipulés selon les besoins à ce moment-là.

Vous devez avoir remarqué les variables {{ http_port }} et {{ http_host }} sur la capture d'écran ci-dessus.

Maintenant, nous allons écrire le playbook qui consiste en la valeur réelle des variables incluses dans le fichier de modèle jinja2.

Une fois le playbook exécuté avec succès, les variables seront remplacées par les valeurs réelles dans le fichier du chemin de destination.

Vous pouvez remarquer que les valeurs sont modifiées sur la capture d'écran ci-dessous.

Voici les exemples montrant que le modèle jinja2 accède aux variables et affiche les valeurs réelles sur la sortie finale.

Conditionnel dans le modèle jinja2

Les instructions conditionnelles telles que les boucles for peuvent être utilisées par le modèle jinja2. Les boucles permettent de parcourir les éléments d'une plage, d'une liste, etc. Ici, nous écrivons un exemple pour montrer la boucle for utilisée dans le modèle jinja2.

Par exemple, nous allons écrire notre fichier de modèle " server_hosts.j2" comme la capture d'écran suivante.

$ cat server_hosts.j2

Sortie :

{% for host in groups['all'] %}

{{ hostvars[host].ansible_facts.default_ipv4.address }} {{ hostvars[host].ansible_facts.fqdn }} {{ hostvars[host].ansible_facts.hostname }}

{% endfor %}

Il itérera sur tous les hôtes de l'inventaire. Pour chaque hôte, la valeur de toutes les variables utilisées dans le modèle sera affichée.

Sur le nœud de contrôle, nous allons écrire un playbook "conditional.yml" incluant le fichier de modèle jinja2 ci-dessus.

$ sudo vim conditional.yml

Maintenant, nous exécutons le playbook "conditional.yml"

$ ansible-playbook conditional.yml

Maintenant, nous pouvons voir le résultat sur le nœud hôte si le fichier /etc/hosts est mis à jour ou non.

C'est le résultat final de nos variables dans le fichier de modèle jinja2 itéré sur tous les hôtes de l'inventaire. Ainsi, les instructions conditionnelles telles que les boucles for peuvent également être utilisées dans les fichiers de modèle jinja2.

Filtres utilisés dans le modèle jinja2

Si vous souhaitez que la sortie soit différente ou formatée, vous pouvez utiliser des filtres. Vous pouvez simplement diriger les variables avec les arguments comme indiqué ci-dessous.

{{ variable | argument }}

Ici, nous allons écrire un fichier de modèle jinja2 "jinja_filters.j2" pour afficher les filtres utilisés sur le fichier de modèle jinja2.

$ vim jinja_filters.j2

Nous allons écrire un playbook "filters.yml" qui consiste en un fichier modèle jinja2.

$ vim filters.yml

Maintenant, nous exécutons le playbook "filters.yml"

Maintenant, nous pouvons voir le résultat sur le nœud hôte si le fichier de destination est créé avec le contenu en majuscule ou non.

Ici, vous pouvez voir que tout le texte est en majuscule car nous avons utilisé le filtre en canalisant l'élément de variables dans l'argument en majuscule.

Conclusion

Vous pouvez utiliser ces fichiers de modèle jinja2 selon vos besoins pour manipuler les variables et les données afin de gagner du temps et de fluidifier le fonctionnement des playbooks sur ansible. Vous pouvez également utiliser des filtres pour manipuler les nombres de haut en bas, etc. Essayez d'explorer le modèle jinja2 pour plus de fonctionnalités. Merci !


Ubuntu
  1. Comment utiliser la commande Apt-Get sous Linux

  2. Comment utiliser la commande sudo sous Linux

  3. Comment utiliser la commande hostname sous Linux

  4. Comment utiliser la commande Passwd sous Linux

  5. Comment utiliser la commande basename ?

Comment utiliser la commande locate sous Linux

Comment utiliser des variables dans Ansible Playbook

Comment utiliser le modèle Jinja2 dans Ansible Playbook

Comment utiliser Ansible pour configurer Vim

Comment utiliser la commande Linux Top

Comment utiliser le Hud ?