À 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:
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:
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:
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.