parsing json com sintaxe ansible

1

Este é o conteúdo do registro de:

- debug:
    var: vmfacts.virtual_machines


ok: [localhost] => {
"vmfacts.virtual_machines": {
    "2k12r2-k11": {
        "guest_fullname": "Microsoft Windows Server 2012 (64-bit)", 
        "ip_address": "10.0.1.20", 
        "mac_address": [
            "00:50:56:00:00:20"
        ], 
        "power_state": "poweredOn", 
        "uuid": "421d5210-8a64-2d60-8b44-02de952600d1"
    }, 

abaixo funciona bem, mas eu preciso do valor de uuid acima

- shell: "echo {{ item }}"
  with_items: "{{ vmfacts.virtual_machines }}"

Parece que não é possível decodificar a sintaxe, mas nada disso parece funcionar:

"echo {{item.uuid}}" "echo {{item.0.uuid}}" "echo {{item [0] .uuid}}"

Qual é a maneira correta de acessar o valor do uuid?

    
por jacksonp 06.10.2017 / 18:19

1 resposta

3

vmfacts.virtual_machines é um dict .

with_items quando aplicado a dict itera apenas sobre as chaves.

Então:

- shell: "echo {{ vmfacts.virtual_machines[item].uuid }}"
  with_items: "{{ vmfacts.virtual_machines }}"

Ou use melhor with_dict :

- shell: "echo {{ item.value.uuid }}"
  with_dict: "{{ vmfacts.virtual_machines }}"
    
por 06.10.2017 / 18:26

Tags