Cómo recorrer los registros de un archivo json en Ansible.
Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Soy nuevo en Ansible, solo me pregunto cómo podría recorrer registros json con Ansible. Tengo un archivo json con los siguientes datos:
{
"map": {
"entry": [
{
"string": [
"6a032ae5-3eed-4d20-a9ef-ccbd88118c47"
]
},
{
"string": [
"27617813-e268-4c94-b539-3550a3a8501a"
]
},
{
"string": [
"b39b10fb-0538-42d7-96fc-553eee9c7ded"
]
}
]
}
}
y tengo el siguiente código en Ansible para recorrer el archivo json:
- name: Inicializar variables
set_fact:
NEW_CODE_TEMPLATES_IDS: "{{ lookup('file', 'code_template_map/codeTemplate.json') | json_query('map.entry[*].item') }}"
- name: Identificación del código de la plantilla
debug:
var: NEW_CODE_TEMPLATES_IDS
Espero que la salida sea como la siguiente:
6a032ae5-3eed-4d20-a9ef-ccbd88118c47
27617813-e268-4c94-b539-3550a3a8501a
b39b10fb-0538-42d7-96fc-553eee9c7ded
Pero por alguna razón, esto no parece estar funcionando para mí. ¿Alguien sabe por qué?
davy.ai
Para recorrer un registro JSON con Ansible, puede usar el filtro
json_query
. El filtrojson_query
le permite consultar una estructura JSON utilizando la sintaxis JMESPath.En el código provisto, puede modificar la tarea
set_fact
de la siguiente manera:Aquí, se utiliza el filtro
from_json
para convertir los datos JSON a un diccionario de Python. Luego, se utiliza el filtrojson_query
para extraer los valores de los camposstring
dentro de cada elementoentry
.La tarea
debug
debe permanecer igual:Esto debería imprimir el resultado esperado: