2016-12-23 2 views
0

я есть этот шаблон в дзиндзя:Получить значение различной итерации - jinja2

{% for value in id_ip.results %} 
    { 
     "title": "asd", 
     "rel":"adas", 
     "type":"application/nalip+json", 
     "href": "https://www.api.com:443/api/{{item.item.stdout}}/{{item.stdout}}" 
    }{% if loop.last %},{% endif %} 
    {% endfor %} 

переменных собирают из списка JSON, которым приходят из анзибль задачи с 2 итерациями:

- name: Define templatesssss 
    template: 
     src: requestpayload.j2 
     dest: /tmp/requestpayload.j2 
     owner: root 
     group: root 
     mode: 0644 
    with_items: 
     - "{{id_ip.results}}" 

И id_ip.results имеют две итерации этого JSON.

"invocation": { 
     "module_args": { 
      "var": "item" 
     }, 
     "module_name": "debug" 
    }, 
    "item": { 
     "changed": true, 
     "invocation": { 
      "module_args": { 
      "warn": true 
      }, 
      "module_name": "command" 
     }, 
     "item": { 
      "changed": true, 
      "invocation": { 
       "module_args": { 
        "warn": true 
       }, 
       "module_name": "command" 
      }, 
      "item": { 
       "gateway": "1", 
       "ip": "2" 
      }, 
      "stdout": "62", 
      "stdout_lines": [ 
       "62" 
      ], 
      "warnings": [] 
     }, 
     "stdout": "316", 
     "stdout_lines": [ 
      "316" 
     ], 
     "warnings": [] 
    } 
} 

Im заинтересован в stdout's, потому что это значение, которое я должен принять в шаблоне. Результат шаблона заключается в следующем:

{ 
    "title": "asd", 
    "rel":"adas", 
    "type":"application/vnd.externalip+json", 
    "href": "https://servicios.com:443/api/limits/2/externalnetworks/62/ips/316" 
}  { 
    "title": "asd", 
    "rel":"adas", 
    "type":"application/vnd.externalip+json", 
    "href": "https://servicios.com:443/api/limits/2/externalnetworks/62/ips/316" 

Как вы можете видеть, что значения и в обоих пунктов, было бы хорошо, если бы только одна итерация, но мне нужно пройти вторых итераций во второй сектор.

Как я могу это сделать?

+0

Вашего JSON не имеет ключ 'results' который вы ссылаетесь, вместо этого он имеет синтаксическую ошибку - сохраняющуюся запятую в'«ф»:«2»,' Как насчет вы публикуете полный, согласованный и проверяемый пример? Если вас это не волнует, зачем кому-то еще заботиться? – techraf

ответ

0

попробовать:

% for value in id_ip.results %} 
    { 
     "title": "asd", 
     "rel":"adas", 
     "type":"application/nalip+json", 
     "href": "https://www.api.com:443/api/{{value.item.item.stdout}}/{{value.item.stdout}}" 
    }{% if loop.last %},{% endif %} 
    {% endfor %} 
+0

Hi @Stijn Diependaele, если я использую ваше решение, я получил следующую ошибку: '" msg ":" AnsibleUndefinedVariable: 'dict object' не имеет атрибута 'stdout' "' –