Ansible selectAttr/Recheattr

Ansible selectAttr/Recheattr

Los filtros Jinja2 son una herramienta increíblemente fuerte que puede ayudarnos con una variedad de actividades para manipular información en Ansible. Según esto, vamos a discutir los filtros Ansible SelectAttr y RechEattr Jinja en este artículo. Pero antes de saltar a SelectAttr y Rechintattr, comprendamos primero cuál es el papel de los filtros en Jinja2.

¿Cuáles son los filtros de Jinja2 en Ansible??

Cuando requerimos el manejo, estructuración y traducción de la información, usamos Ansible. Jinja2 ofrece varios filtros preconstruidos, así como filtros personalizables creados por el usuario. Estos filtros son filtros Jinja2 que funcionan en el backend, lo que transforma la información proporcionada dentro de una expresión de plantilla. Los servidores remotos específicos no están involucrados en la plantilla, tiene lugar en el sistema de controlador Ansible. Como resultado, los filtros se aplican a los datos locales que el controlador Ansible proporciona. Además, los filtros SelectATTR y RechleTtr de Ansible se derivan de estos filtros.

SelectAttr Filter en Ansible

El selectATTR representa el filtro de atributo seleccionar. Cada atributo Select se utiliza para realizar pruebas en cada objeto que sea un atributo definido y solo elegir los que pasan los filtros de prueba, es una sucesión de elementos. El resultado del atributo selecto se evaluaría como un booleano a pesar de que ninguna prueba se define en Ansible. En el filtro SelectAttr ansible, se pasan tres parámetros en Ansible, que son el atributo, un operador booleano y un argumento. Una de las pruebas incorporadas de Jinja se puede seleccionar como operador.

Ejemplo:

Aquí hay un ejemplo simple en el que vamos a utilizar el filtro SelectAttr en Ansible. Para comprender cómo funcionará en Ansible, vamos a implementar un escenario para que comprendamos cómo funcionará en Ansible. Para hacerlo, primero, crearemos un libro de jugadas porque los libros de jugadas son colecciones de instrucciones que se ejecutan a través de hosts remotos de Target de forma autónoma.

Un libro de jugadas Ansible tiene diferentes módulos y cada módulo lleva a cabo una determinada funcionalidad. Cada módulo proporciona metadatos que establecen cuándo, dónde y por qué host remoto se lleva a cabo la tarea. El siguiente es el comando que escribiremos en la terminal para crear un libro de jugadas.

[root@maestro ansible]# nano ansible_filter.YML

Para crear el libro de jugadas, también escribimos la extensión del libro de jugadas, que es YAML, o otro idioma de marcado, que es un formato de archivo que utiliza la extensión.YML. Ahora el libro de jugadas se lanza a una nueva terminal ansible del nombre Ansible_Filter.YML. En el libro de jugadas, primero escribimos la información sobre los hosts remotos. En los hosts, estamos utilizando el localhost como un host remoto de destino.

A continuación, hemos pasado el valor "verdadero" a la opción Reungue_facts en el libro de jugadas para que podamos obtener toda la información relacionada con el localhost en la salida. Después de establecer el host, ahora haremos una lista de cada tarea que pretendemos completar. El primer nombre de la tarea es "todas las variables de entorno" y hemos pasado la variable para que podamos depurarla. En la siguiente tarea, queremos habilitar el filtro de Jinja2 que se usa en Ansible, que es el filtro SelectAttr. En el filtro selectAttr, hemos pasado los tres argumentos que son la clave, la coincidencia y el shell.

- Hospedadores:
- hostil
gather_facts: verdadero
tareas:
- Nombre: todas las variables de entorno
depurar:
var: 'ansible_facts.envidia
- Nombre: Filtro habilitado
depurar:
msg: "(ansible_facts.Env | dict2items | selectAttr ('Key', 'Match', 'Shell')) | lista "

Después de enumerar todas las tareas, queremos hacer, finalizaremos el libro de jugadas presionando CTRL + X y luego guardar las actualizaciones. Ahora, queremos ejecutar el libro de jugadas. Escribiremos el siguiente comando en el terminal:

[root@maestro ansible]# ansible-playbook ansible_filter.YML

Aquí está el escaparate requerido utilizando el atributo selectAttr en el libro de jugadas. Como has visto, hemos obtenido una salida muy larga porque hemos utilizado la opción de hechos de recopilación como una verdadera en el libro de jugadas. Entonces, por eso está mostrando toda la información del localhost en la salida en el terminal ansible.

Como se muestra, el atributo SELECT se habilita mostrando la señal OK al final del terminal de salida.

Filtro de rechazo en Ansible

El rechazo representa el atributo de rechazo de Jinja2 en Ansible y es lo opuesto a SelectAttr. El rechazo elimina cualquier elemento del iterable especificado que no satisfaga el atributo proporcionado y pase con éxito la prueba. Realizar pruebas en el atributo dado de cada elemento, como parte del proceso de filtrado, da como resultado el rechazo de cualquier elemento que pase la prueba. Una evaluación booleana del valor del atributo tendrá lugar si no se proporciona ninguna prueba.

Ejemplo:

Aquí está el ejemplo de que vamos a realizar utilizando uno de los atributos importantes de Jinja2 en Ansible, que es el atributo de rechazo. En este ejemplo, estamos tratando de aplicar una condición a cada elemento de un diccionario para eliminar los elementos coincidentes del diccionario. Entonces, para eso, volveremos a lanzar el libro de jugadas para que podamos alterar las tareas de acuerdo con el atributo de rechazo. A continuación se muestra el comando para iniciar el módulo_filter.YML Playbook:

[root@maestro ansible]# nano ansible_filter.YML

Ahora, en el libro de jugadas, hemos pasado el "falso" a la opción de hechos de recopilación porque no queremos obtener la información adicional relacionada con el localhost, ya que ya hemos recibido la información en el ejemplo de filtro selectAttr. Ahora, escribiremos la variable en el libro de jugadas. En el Vars, tenemos que escribir el nombre y el tipo de medicamentos. A continuación, tenemos que escribir la tarea. En la tarea, queremos filtrar todos los medicamentos, excepto los supositorios, y lo depuramos al pasar el filtro de rechazo.

- Hospedadores:
- hostil
gather_facts: falso
Vars:
medicamentos:
- Nombre: sarampión, tipo: inyecciones
- Nombre: Nepawell, Tipo: Drops
- Nombre: Colace, Type: Suppositories
tareas:
- Nombre: Filtrar todos los medicamentos que no sean supositorios
depurar:
Msg: "(Medicamentos | RechaceTtr ('Tipo', 'Match', 'Suppositorios')) | Lista"

Ahora, terminaremos el libro de jugadas. Después de eso, queremos ejecutar el libro de jugadas para que podamos obtener la salida adecuada del atributo de rechazo de Ansible.

[root@maestro ansible]# ansible-playbook ansible_filter.YML

Aquí está el resultado de un atributo de rechazo en la herramienta Ansible. El terminal muestra sarampión y medicina de Nepawell y rechaza la medicina Colace del libro de jugadas.

Conclusión

Hemos aprendido qué filtros hay en Jinja2 y qué filtros vamos a usar en esta sesión de Ansible. Hemos discutido los dos filtros importantes que son los filtros SelectAttr y Rechleattr en Ansible. Hemos implementado cada ejemplo de un filtro para que los usuarios puedan comprender fácilmente los conceptos y el funcionamiento de estos filtros en Ansible.