ANSIBLE selectattr / rejectattr

ANSIBLE selectattr / rejectattr

Les filtres Jinja2 sont un outil incroyablement solide qui peut nous aider dans une variété d'activités pour manipuler des informations dans Ansible. Sur la base de cela, nous allons discuter des filtres Jinja de SelectAtTr et Rejectattr Ansible dans cet article. Mais avant de sauter sur le SelectAtTr et le RejectAttr, comprenons d'abord quel est le rôle des filtres dans Jinja2.

Quels sont les filtres de Jinja2 dans ANIBLE?

Lorsque nous avons besoin d'une gestion, de la structuration et de la traduction d'informations, nous utilisons ANSIBLE. Jinja2 propose plusieurs filtres prédéfinis ainsi que des filtres personnalisables créés par l'utilisateur. Ces filtres sont des filtres Jinja2 qui fonctionnent dans le backend, qui transforme les informations fournies dans une expression de modèle. Les serveurs distants ciblés ne sont pas impliqués dans les modèles, il se déroule sur le système de contrôleur ANSIBLE. En conséquence, des filtres sont appliqués aux données locales que le contrôleur anible fournit. De plus, les filtres SelectAtTr et RejectAttr d'ANSIBLE sont dérivés de ces filtres.

SELECTATTr Filtre dans ANIBLE

Le SelectAtTr signifie Select Attribut Filtre. Chaque attribut de sélection est utilisé pour effectuer des tests sur chaque objet qui est un attribut défini et ne choisir que ceux qui passent les filtres de test, c'est une succession d'articles. Le résultat de l'attribut de sélection serait évalué comme un booléen même si aucun test n'est défini dans ANSIBLE. Dans le filtre ANSIBLE SELECTATTR, trois paramètres sont passés dans ANSIBLE qui sont l'attribut, un opérateur booléen et un argument. L'un des tests intégrés de Jinja peut être sélectionné comme opérateur.

Exemple:

Voici un exemple simple où nous allons utiliser le filtre SelectatTr dans ANSIBLE. Pour comprendre comment cela fonctionnera dans Ansible, nous allons mettre en œuvre un scénario afin que nous comprendrons comment il fonctionnera dans ANIBLE. Pour ce faire, nous allons d'abord créer un livre de jeu car les manuels sont des collections d'instructions qui se déroulent sur les hôtes distants cibles de manière autonome.

Un livre de jeu ANSIBL a des modules différents et chaque module effectue une certaine fonctionnalité. Chaque module fournit des métadonnées qui établissent quand, où et par lequel l'hôte à distance, la tâche est effectuée. Ce qui suit est la commande que nous écrirons dans le terminal pour créer un livre de jeu.

[root @ maître anible] # nano anible_filter.YML

Pour créer le playbook, nous écrivons également l'extension du playbook, qui est YAML, ou encore une autre langue de balisage, qui est un format de fichier qui utilise l'extension.YML. Maintenant, le playbook est lancé dans un nouveau terminal anible du nom ANSIBLE_FILTER.YML. Dans le livre de jeu, nous écrivons d'abord les informations concernant les hôtes distants. Chez les hôtes, nous utilisons le localhost comme hôte à distance cible.

Ensuite, nous avons transmis la «vraie» valeur à l'option Gather_facts dans le playbook afin que nous puissions obtenir toutes les informations liées au Host local dans la sortie. Après avoir établi l'hôte, nous ferons maintenant une liste de chaque tâche que nous avons l'intention de terminer. Le premier nom de tâche est «toutes les variables d'environnement» et nous avons passé la variable dedans afin que nous puissions le déboguer. Dans la tâche suivante, nous voulons activer le filtre de Jinja2 qui est utilisé dans Ansible qui est le filtre Selectattr. Dans le filtre SelectatTr, nous avons passé les trois arguments qui sont la clé, la correspondance et le shell.

- Hôtes:
- hôte local
rassemble_facts: vrai
Tâches:
- Nom: toutes les variables d'environnement
déboguer:
var: 'anible_facts.Env '
- Nom: Filtre activé
déboguer:
msg: "(anible_facts.Env | dict2items | selectattr ('key', 'match', 'shell')) | liste "

Après avoir inscrit toutes les tâches, nous voulons faire, nous terminerons le livre de jeu en frappant Ctrl + X, puis en enregistrer les mises à jour. Maintenant, nous voulons exécuter le playbook, nous rédigeons la commande ci-dessous dans le terminal:

[root @ maître anible] # anible-playbook anible_filter.YML

Voici la vitrine requise en utilisant l'attribut SelectatTr dans le livre de jeu. Comme vous l'avez vu, nous avons obtenu une très longue sortie parce que nous avons utilisé l'option de fait de rassemblement comme vrai dans le livre de jeu. C'est donc pourquoi il affiche toutes les informations du Host local dans la sortie dans le terminal anible.

Comme indiqué, l'attribut de sélection est activé en affichant le signal OK à la fin de la borne de sortie.

Filtre Rejectattr dans ANIBLE

Le RejectAttr signifie l'attribut de rejet de Jinja2 dans ANSIBLE et c'est l'opposé de Selectattr. Le RejectAttr supprime les éléments de l'itérable spécifié qui ne satisfait pas l'attribut fourni et réussit avec succès le test. Effectuer des tests sur l'attribut donné de chaque élément, dans le cadre du processus de filtrage, entraîne le rejet de tous les éléments qui passent le test. Une évaluation booléenne de la valeur de l'attribut aura lieu si aucun test n'est fourni.

Exemple:

Voici l'exemple que nous allons effectuer en utilisant l'un des attributs importants de Jinja2 dans Ansible qui est l'attribut de rejet. Dans cet exemple, nous essayons d'appliquer une condition à chaque élément d'un dictionnaire pour éliminer les articles correspondants du dictionnaire. Donc, pour cela, nous lancerons à nouveau le livre de jeu afin que nous puissions modifier les tâches en fonction de l'attribut Reject. Vous trouverez ci-dessous la commande pour lancer le module_filter.YML Playbook:

[root @ maître anible] # nano anible_filter.YML

Maintenant, dans le manuel de jeu, nous avons passé la «False» à l'option Fact Gathering parce que nous ne voulons pas obtenir les informations supplémentaires liées au Host local, car nous avons déjà obtenu les informations dans l'exemple de filtre SelectatTr. Maintenant, nous allons écrire la variable dans le livre de jeu. Dans le VARS, nous devons écrire le nom et le type de médicaments. Ensuite, nous devons écrire la tâche. Dans la tâche, nous voulons filtrer tous les médicaments sauf les suppositoires et nous le déboglons en passant le filtre Rejectattr.

- Hôtes:
- hôte local
rassemble_facts: faux
VARS:
médicaments:
- nom: rougeole, type: injections
- Name: Nepawell, Type: Drops
- nom: colace, type: suppositoires
Tâches:
- Nom: Filtrez tous les médicaments autres que les suppositoires
déboguer:
msg: "((médicaments | rejectAttr ('type', 'match', 'supositories')) | list"

Maintenant, nous allons mettre fin au livre de jeu. Après cela, nous voulons exécuter le playbook afin que nous puissions obtenir la sortie appropriée de l'attribut de rejet d'Anable.

[root @ maître anible] # anible-playbook anible_filter.YML

Voici le résultat d'un attribut de rejet dans l'outil ANSIBLE. Le terminal affiche la rougeole et la médecine de Nepawell et rejette le Colace Medicine du livre de jeu.

Conclusion

Nous avons appris quels filtres sont dans Jinja2 et quels filtres nous allons utiliser dans cette session Ansible. Nous avons discuté des deux filtres importants qui sont les filtres SelectatTr et RejectAttr dans ANSIBLE. Nous avons implémenté chaque exemple de filtre afin que les utilisateurs puissent facilement comprendre les concepts et le fonctionnement de ces filtres dans ANSIBLE.