Ansible

Manipuler les données Ansible à l'aide des filtres Jinja

Manipuler les données Ansible à l'aide des filtres Jinja

Parfois, lorsque vous utilisez Ansible pour automatiser diverses tâches, vous devrez peut-être transformer et manipuler des données. Dans Ansible, vous pouvez utiliser un ensemble de filtres intégrés ou créer des filtres personnalisés pour manipuler, traiter et convertir des données. Ansible utilise des filtres de modèle jinja2 en arrière-plan pour permettre aux utilisateurs de créer des filtres pour des données spécifiées.

Il est important de noter que la modélisation de filtre est effectuée sur le contrôleur Ansible, et non sur les hôtes distants spécifiés. Cela permet de réduire la quantité de données transférées vers l'hôte distant après le traitement local. Si vous n'êtes pas familier avec les modèles jinja, Jinja est un langage de création de modèles simple, intuitif, rapide et sécurisé pour le langage de programmation Python développé d'après les modèles populaires du framework Python Django.

Nous n'entrerons pas dans le fonctionnement des modèles jinja, bien que cela puisse être un avantage supplémentaire de comprendre comment cela fonctionne avec les modèles.

Consultez la ressource fournie ci-dessous pour en savoir plus sur Jinja.

https://linkfy.à/jinjaDocs

Comment fonctionnent les filtres Ansible

Comme mentionné, le moteur de filtrage Ansible s'appuie sur le modèle de modélisation Jinja. Cela permet aux utilisateurs d'utiliser ces modèles pour saisir des données, les traiter et fournir une sortie basée sur les filtres définis.

Une fois les données transformées et filtrées à l'aide du modèle défini, vous pouvez l'utiliser pour effectuer d'autres tâches dans Ansible. Vous pouvez en savoir plus sur les filtres dans Ansible sur le site Web suivant :

https://linkfy.vers/AnsibleFilters

Ansible a de nombreux filtres qui sont tous très utiles et applicables à de nombreux scénarios différents. Une fois que vous avez la sortie du filtre, vous pouvez l'utiliser pour effectuer d'autres tâches, telles que le débogage.

La syntaxe générale pour filtrer les données est la suivante :

|

Utiliser des filtres Ansible

Nous allons maintenant examiner des exemples de filtres Ansible que nous pouvons utiliser pour effectuer diverses tâches.

REMARQUE: Comme mentionné précédemment, Ansible a de nombreux filtres, nous ne pouvons donc pas tous les couvrir dans cet article. Au lieu de cela, ce tutoriel cherche à vous fournir les bases de l'utilisation de divers filtres Ansible.

Exemple 1 : Filtres de données au format Ansible

Les filtres de données au format Ansible prennent une structure de données de sortie dans un modèle et utilisent le filtre spécifié pour le restituer dans le format appelé dans le filtre.

Vous trouverez ci-dessous un exemple de filtre à convertir en JSON et YAML :

variable | à_json
variable | to_yaml

Par exemple, considérons le playbook suivant :

- hôtes : toutes les tâches :
- shell : chat /tmp/all.json
registre : résultat
- déboguer:
msg : "résultat.sortie standard | to_nice_yaml"

L'exécution du playbook ci-dessus produira une sortie pour les données JSON converties en YAML. Voici un exemple de sortie :

Vous pouvez également spécifier d'autres filtres tels que to_nice_yaml, pour obtenir la sortie dans un format lisible par l'homme.

variable | to_nice_json
variable | to_nice_yaml

À l'aide des filtres de données de mise en forme, vous pouvez transformer les données dans différents formats et les utiliser pour diverses tâches.

Par exemple, vous pouvez transmettre des chaînes YAML multi-documents, comme dans le playbook ci-dessous :

- hôtes : toutes les tâches :
- shell : chat /tmp/all.json
registre : résultat
- déboguer:
msg : "résultat.sortie standard | to_yaml | liste"

Exemple 2 : Filtre par défaut Ansible

Le filtre par défaut d'Ansible permet de définir des valeurs par défaut pour des variables non définies. La configuration par défaut d'Ansible échoue aux variables non définies. Par exemple, si vous avez une variable non définie, vous pouvez dire à Ansible de définir par défaut une valeur au lieu de générer une erreur.

La syntaxe générale du filtre par défaut est la suivante :

| valeur par défaut)

Par example:

- hôtes : tous
variables :
Tâches:
set_fact :
undef_var : "0_var | default(5)"

Le playbook ci-dessus définira la valeur de la variable '0_var' sur 5 si elle n'est pas explicitement définie, au lieu de générer une erreur.

Pour définir une variable, vous pouvez utiliser le filtre obligatoire. Tout ce que vous avez à faire est de vous référer à l'exemple ci-dessus et de remplacer la valeur par défaut par l'obligatoire :

0_var | obligatoire

Exemple 3 : Filtres de débogage Ansible

Lors du débogage, vous pouvez utiliser le filtre type_debug pour obtenir des informations sur le type de variable. Le type de variable sera en Python, car le moteur est basé sur Python. La syntaxe générale du filtre est la suivante :

variable | type_debug

Exemple 4 : Filtres mathématiques

Les filtres mathématiques Ansible vous permettent d'effectuer des requêtes mathématiques. Ces filtres incluent les éléments suivants :

  1. Filtre logarithmique - variable | log - spécifie la base du logarithme entre parenthèses comme variable | journal (2)
  2. Filtre de puissance - variable | pow(3) - renvoie la variable élevée à la puissance spécifiée
  3. Filtre absolu - variable | abs - renvoie la valeur absolue de la variable passée
  4. Filtre racine - variable | root - cela renvoie la racine carrée de la variable. Pour spécifier explicitement la racine, transmettez la valeur entre parenthèses ; par exemple, racine cubique variable | racine(3)

Ces filtres mathématiques peuvent être très utiles, en particulier lorsqu'il s'agit de grandes quantités de données et d'opérations mathématiques instantanées.

Exemple 5 : Filtres de hachage

Les filtres de hachage Ansible permettent d'obtenir le hachage d'une chaîne ou des données passées. Dans la plupart des cas, vous n'aurez pas besoin de ces filtres, mais ils peuvent être utilisés en cas de besoin. Ces filtres incluent les éléments suivants :

  1. Sha1 - var | hachage ("sha1")
  2. Sha256/sha512 - var | password_hash ("sha256/512")
  3. Md5 - var | hachage ("md5")
  4. Somme de contrôle de chaîne - var | somme de contrôle

Autres filtres utiles

Comme vous l'avez peut-être remarqué, Ansible dispose de nombreux filtres. Certains filtres Ansible que vous pouvez trouver utiles sont les suivants :

  • Filtre de fractionnement d'URL - " [email protégé]://linuxhint.com:8080/index.html?requête=linux” | urlspilt ("nom d'hôte"), - renvoie "linuxhint.com"
  • Rejoindre la liste - liste | join - utilisé pour ajouter une liste dans une chaîne var
  • Chemin du répertoire - chemin | dirname
  • Développer un tilde - chemin | expanduser

Conclusion

Les filtres Ansible sont pratiques lorsque vous effectuez des tâches de débogage ou avez besoin d'informations spécifiques sans trop taper. Comme Ansible prend en charge les filtres personnalisés, ces filtres peuvent être particulièrement utiles dans des cas d'utilisation spécifiques.

Comment utiliser AutoKey pour automatiser les jeux Linux
AutoKey est un utilitaire d'automatisation de bureau pour Linux et X11, programmé en Python 3, GTK et Qt. En utilisant ses fonctionnalités de script e...
Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...