Cum pentru a bucla printr-un fișier json înregistrări în ansiblu

0

Problema

Sunt nou in Ansiblu, doar rătăcire cum am putut bucla printr-un json înregistrări cu ansiblu. Am un fișier json cu următoarele date interior:

{
    "map": {
        "entry": [
            {
                "string": [
                    "6a032ae5-3eed-4d20-a9ef-ccbd88118c47"
                ]
            },
            {
                "string": [
                    "27617813-e268-4c94-b539-3550a3a8501a"
                ]
            },
            {
                "string": [
                    "b39b10fb-0538-42d7-96fc-553eee9c7ded"
                ]
            }
        ]
    }
}

și am codul de mai jos în ansiblu pentru a rula prin intermediul fișier json:

- name: Initialise variables
  set_fact:
    NEW_CODE_TEMPLATES_IDS: "{{ lookup('file', 'code_template_map/codeTemplate.json') | json_query('map.entry[*].item') }}"
    
    
- name: code template id
  debug:
    var: NEW_CODE_TEMPLATES_IDS

Mă așteptam la ieșire va fi o astfel de următoarele:

6a032ae5-3eed-4d20-a9ef-ccbd88118c47
27617813-e268-4c94-b539-3550a3a8501a
b39b10fb-0538-42d7-96fc-553eee9c7ded

Dar din anumite motive acest lucru nu pare să lucreze pentru mine. nu stie cineva de ce ?

ansible
2021-11-24 05:09:25
1

Cel mai bun răspuns

1

Nu sunteți de conversie șir returnate de căutare de JSON într-o structură de date (json_query() nu poate fi folosit cu JSON siruri de caractere, se așteaptă analizat structuri de date), și json_query('map.entry[*].item') nu se potrivește cu datele furnizate.

Mi-ar evita json_query() și de a folosi standard Jinja caracteristici pentru această manipulare a datelor:

"{{ (lookup('file', 'code_template_map/codeTemplate.json') | from_json).map.entry | map(attribute='string') | flatten }}"

Daca insistati json_query()ar fi:

"{{ (lookup('file', 'code_template_map/codeTemplate.json') | from_json) | json_query('map.entry[*].string[]') }}"
2021-11-24 06:21:42

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................