태그 보관물: ansible

ansible

Jinja2 템플릿의 Ansible 변수 배열에 대한 루프 “block_available”:

Ansible이 호스트에 대한 사실을 수집하면 예를 들어 호스트의 모든 마운트를 가져옵니다.

 "ansible_mounts": [
            {
                "block_available": 7800291,
                "block_size": 4096,
                "block_total": 8225358,
                "block_used": 425067,
                "device": "/dev/mapper/foobar",
                "fstype": "xfs",
                "inode_available": 16403366,
                "inode_total": 16458752,
                "inode_used": 55386,
                "mount": "/",
                "options": "rw,seclabel,relatime,attr2,inode64,noquota",
                "size_available": 31949991936,
                "size_total": 33691066368,
                "uuid": "2ebc82cb-5bc2-4db9-9914-33d65ba350b8"
            },
            {
                "block_available": 44648,
                "block_size": 4096,
                "block_total": 127145,
                "block_used": 82497,
                "device": "/dev/sda1",
                "fstype": "xfs",
                "inode_available": 255595,
                "inode_total": 256000,
                "inode_used": 405,
                "mount": "/boot",
                "options": "rw,seclabel,relatime,attr2,inode64,noquota",
                "size_available": 182878208,
                "size_total": 520785920,
                "uuid": "c5f7eaf2-5b70-4f74-8189-a63bb4bee5f8"
            },

등등. 내가하고 싶은 것은 : 템플릿에서 배열의 모든 객체를 반복하고 각 “mount”키의 값을 출력하고 싶습니다.

나는 이렇게 시도 :

    (% for mounts in {{ ansible_mounts }} %)
    Mountpoint: {{ ansible_mounts.mount }}
    (% endfor %)

그러나 작동하지 않습니다. iteritems ()와 같은 다른 것들로 시도했지만 작동시키지 못했습니다. 내가 아는 한 Ansible의 출력은 json에 있습니다. 누군가 해결책을 알고 있습니까? 아니면 이것이 스택 오버 플로우에 대한 질문입니까?

답변 주셔서 감사합니다.



답변

간단한 구문 오류가 있습니다. 괄호 대신 중괄호를 사용해야합니다.

현재 가지고있는 것들 :

(% for mounts in {{ ansible_mounts }} %)
Mountpoint: {{ ansible_mounts.mount }}
(% endfor %)

괄호가 아닌 중괄호, 즉 {%및 이어야합니다 %}.

또한 선택한 변수 이름은 for입니다 mounts. 그래서 실제로 각 객체를 얻기 위해 루프 내부에서 사용해야합니다.

마지막으로 for 루프에서 변수 주위에 중괄호가 필요하지 않습니다.

이러한 오류를 수정하면 다음과 같은 결과가 발생합니다.

{% for mounts in ansible_mounts %}
Mountpoint: {{ mounts.mount }}
{% endfor %}


답변