Tha*_*Net 15 json ansible jinja
例如,当 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"
},
Run Code Online (Sandbox Code Playgroud)
等等。所以我想做的是:在模板中,我想遍历数组中的所有对象并输出每个“mount”键的值。
我像这样尝试:
(% for mounts in {{ ansible_mounts }} %)
Mountpoint: {{ ansible_mounts.mount }}
(% endfor %)
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我尝试了一些其他的东西,比如 iteritems() 但我无法让它工作。据我所知,Ansible 的输出是 json,如果这对任何人有帮助。有人知道解决方案吗,或者这更像是stackoverflow的问题?
感谢您提供任何答案。
Mic*_*ton 22
你有一个简单的语法错误;您应该使用大括号而不是括号。
您目前拥有:
(% for mounts in {{ ansible_mounts }} %)
Mountpoint: {{ ansible_mounts.mount }}
(% endfor %)
Run Code Online (Sandbox Code Playgroud)
这些应该是大括号,而不是括号,即{%和%}。
此外,您在for中选择的变量名称是mounts,因此您应该在循环中实际使用它来获取每个对象。
最后,for 循环中变量周围的大括号不是必需的。
纠正这些错误会导致这样,这应该可以正常工作:
{% for mounts in ansible_mounts %}
Mountpoint: {{ mounts.mount }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52997 次 |
| 最近记录: |