
當 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 格式,如果這對任何人有幫助的話。有人知道解決方案還是這更多是 stackoverflow 的問題?
感謝您的任何答覆。
答案1
你有一個簡單的語法錯誤;您應該使用大括號而不是圓括號。
您目前擁有:
(% for mounts in {{ ansible_mounts }} %)
Mountpoint: {{ ansible_mounts.mount }}
(% endfor %)
這些應該是大括號,而不是圓括號,即{%
and %}
。
此外,您在其中選擇的變數名稱for
是mounts
,因此這就是您應該在循環內實際使用的變數名稱來獲取每個物件。
最後,for 迴圈中變數周圍的大括號不是必需的。
糾正這些錯誤會導致這樣的結果,應該可以正常工作:
{% for mounts in ansible_mounts %}
Mountpoint: {{ mounts.mount }}
{% endfor %}