es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtrar elementos que pertenezcan a un grupo mediante Ansible Jinja2.

Estoy intentando utilizar una variable de entorno llamada MOLECULE_GROUP para filtrar valores que no pertenecen a un cierto grupo. Es más fácil mostrarlo: estoy intentando convertir esto:

yaml
platforms:
– name: Ubuntu
groups:
– testme
– name: Fedora
groups:
– donttestme

En esto:

yaml
platforms:
– name: Ubuntu
groups:
– testme

Usaría esto para ejecutar escenarios condicionalmente que son miembros de un cierto grupo, precediendo el comando de molécula con MOLECULE_GROUP=testme. Molecule no admite filtrar por grupos de esta manera, por lo que quiero tener create.yml y destroy.yml personalizados, pero necesito saber cómo modificar el valor de molecule_yml.platforms.

Intenté usar combinaciones de selectattr y map, pero no pude resolverlo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para filtrar los valores que no pertenecen a un grupo determinado utilizando una variable de entorno MOLECULE_GROUP, se puede utilizar el filtro selectattr de Jinja2 para seleccionar solo los diccionarios cuya clave groups contiene el valor de MOLECULE_GROUP. Aquí hay un ejemplo de cómo modificar el archivo molecule.yml para lograr esto:

    platforms: {{ molecule_yml.platforms|selectattr('groups','contains', lookup('env', 'MOLECULE_GROUP'))|list }}
    

    Aquí, lookup('env', 'MOLECULE_GROUP') busca el valor de la variable de entorno MOLECULE_GROUP y selectattr filtra la lista de diccionarios de plataformas para incluir solo aquellos cuya clave groups contiene este valor. Finalmente, list convierte el resultado filtrado de nuevo en una lista.

    Puede utilizar este archivo molecule.yml modificado en su archivo de comandos de ansible personalizado create.yml, destroy.yml y otros para ejecutar escenarios condicionalmente que son miembros de un determinado grupo basado en el valor de MOLECULE_GROUP proporcionado.

Comments are closed.