Comment faire une boucle par le biais d'un fichier json enregistrements dans ansible

0

La question

Je suis nouveau dans Ansible, juste errer comment pourrais-je faire une boucle par un json enregistrements avec ansible. J'ai un fichier json avec les données suivantes à l'intérieur:

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

et j'ai le code suivant dans ansible pour parcourir le fichier 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

J'attend la sortie sera comme suit:

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

Mais pour une raison quelconque, cela ne semble pas de travail pour moi. n'est pas ce que quelqu'un sait pourquoi ?

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

La meilleure réponse

1

Vous n'êtes pas convertir la chaîne de caractères retournée par la recherche de JSON dans une structure de données (json_query() ne peut pas être utilisé avec des chaînes JSON, il s'attend à ce analysé les structures de données), et json_query('map.entry[*].item') ne correspondent pas aux données que vous avez fournies.

Je voudrais éviter de json_query() et l'utilisation standard de Jinja fonctionnalités de manipulation de données:

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

Si vous insistez sur l'utilisation de json_query(), ce serait:

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

Dans d'autres langues

Cette page est dans d'autres langues

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