Ansible에서 1개의 키 값을 에코합니까?

Ansible에서 1개의 키 값을 에코합니까?

나는 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   

관련 정보