나는 ansible var를 가지고 있습니다 :
site1:
- name: myName
value1: something1
value2: apple
value3: 14
...
valuen: "a submarine"
그래서 요점은 얼마나 많은 값이 있는지 모른다는 것입니다.
내가 원하는 출력은 다음과 같습니다.
myName something1 apple 14 a submarine.
(키와 그 값)
코드에서:
{% for item in site1 %} {% for value in item.name %} {{value}} {% endfor %} {% endfor %}
분명히 이것은 작동하지 않지만 올바른 방법이 있습니까?
답변1
사전 키를 반복하고 원하지 않는 키를 필터링합니다.
---
- hosts: all
gather_facts: no
vars:
site1:
- name: myName
value1: something1
value2: apple
value3: 14
valuen: "a submarine"
tasks:
- debug:
msg: |
{%- for item in site1 %}
{{item['name']}}
{%- for key in item.keys() | sort %}
{%- if key.startswith('value') %}
{{item[key]}}
{%- endif %}
{%- endfor %}
{%- endfor %}.
결과:
$ ansible-playbook -i localhost, playbook.yml
PLAY [all] ********************************************************************
TASK: [debug ] ****************************************************************
ok: [localhost] => {
"msg": "myName something1 apple 14 a submarine."
}
PLAY RECAP ********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0