Manipuler les données ansibles à l'aide de filtres Jinja

Manipuler les données ansibles à l'aide de filtres Jinja

À certaines occasions, 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. Anable 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 les modèles de filtrage sont effectués sur le contrôleur ANSIBL, et non sur les hôtes distants spécifiés. Cela permet de réduire la quantité de données transférées à l'hôte distant après un traitement local. Si vous n'êtes pas familier avec les modèles Jinja, Jinja est un langage de modèles simple, intuitif, rapide et sécurisé pour le langage de programmation Python développé après les modèles de django de framework Python populaire.

Nous n'allons pas dans le fonctionnement des modèles Jinja, bien que cela puisse être un avantage supplémentaire pour 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 anibles

Comme mentionné, le moteur de filtrage anible s'appuie sur le modèle de modèles Jinja. Cela permet aux utilisateurs d'utiliser ces modèles pour saisir des données, les traiter et fournir une sortie en fonction des 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.à / aniblefilters

ANIBLE 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, comme le débogage.

La syntaxe générale pour le filtrage des données est la suivante:

|

En utilisant des filtres anibles

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

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

Exemple 1: filtres de données au format anible

Les filtres de données au format anible prennent une structure de données de sortie dans un modèle et utilisent le filtre spécifié pour le rendre 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érez le livre de jeu suivant:

- Hôtes: toutes les tâches:
- Shell: Cat / TMP / All.json
Registre: résultat
- déboguer:
msg: "résultat.stdout | to_nice_yaml "

L'exécution du playbook ci-dessus produira une sortie pour les données JSON converties en yaml. Ce qui suit est 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 en différents formats et les utiliser pour diverses tâches.

Par exemple, vous pouvez passer des cordes YAML multi-documents Parse, comme dans le livre de jeu ci-dessous:

- Hôtes: toutes les tâches:
- Shell: Cat / TMP / All.json
Registre: résultat
- déboguer:
msg: "résultat.stdout | to_yaml | lister"

Exemple 2: filtre par défaut anible

Le filtre par défaut ANSIBLE aide les valeurs par défaut aux variables non définies. La configuration ANSIBLE par défaut échoue des variables non définies. Par exemple, si vous avez une variable non définie, vous pouvez dire à ANNIBLE de par défaut une valeur au lieu d'augmenter une erreur.

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

| valeur par défaut)

Par exemple:

- hôtes: tout
VARS:
Tâches:
set_fact:
undef_var: "0_var | par défaut (5)"

Le livre de jeu ci-dessus définira la valeur de la variable '0_var' sur 5 sinon définie explicitement, au lieu de lancer 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'obligation:

0_var | obligatoire

Exemple 3: filtres de débogage anible

Lors du débogage, vous pouvez utiliser le filtre Type_debug pour obtenir des informations sur le type de variable. Le type 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 anibles vous permettent d'effectuer des requêtes liées aux mathématiques. Ces filtres incluent les éléments suivants:

  1. Filtre à logarithme - variable | log - spécifie la base du logarithme entre parenthèses comme variable | journal (2)
  2. Filtre à puissance - variable | POW (3) - Renvoie la variable soulevé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, passez la valeur entre parenthèses; Par exemple, Cube Root variable | racine (3)

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

Exemple 5: filtres de hachage

Les filtres de hachage ANSIBL vous permettent d'obtenir le hachage d'une chaîne ou de données passées. Dans la plupart des cas, vous n'aurez pas besoin de ces filtres, mais ils sont disponibles à utiliser si le besoin s'en fait. Ces filtres incluent les éléments suivants:

  1. Sha1 - var | hash ("sha1")
  2. Sha256 / sha512 - var | Password_hash («Sha256 / 512»)
  3. Md5 - var | hash ("md5")
  4. Étanche à cordes - var | somme de contrôle

Autres filtres utiles

Comme vous l'avez peut-être remarqué, ANIBLE a de nombreux filtres. Certains filtres anibles que vous pouvez trouver utiles incluent les éléments suivants:

  • Filtre à fente d'URL - “Developer @ https: // Linuxhint.com: 8080 / index.html?Query = Linux ”| UrlSpilt («Hostname»), - Renvoie «Linuxhint.com »
  • Liste d'adhésion - list | join - utilisé pour ajouter une liste dans une chaîne var
  • Chemin de répertoire - Path | dirname
  • Développer un tilde - Path | élargir

Conclusion

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