我有以下輸出
TASK [debug] *******************************************************************
ok: [1.1.1.1] => {
"msg": [
{
"DESCRIP": "server-abc",
"PORT": "Po3",
"PROTOCOL": "up",
"STATUS": "up"
},
{
"DESCRIP": "Leaf-1",
"PORT": "Po4",
"PROTOCOL": "up",
"STATUS": "up"
},
{
"DESCRIP": "server-xyz",
"PORT": "Po1",
"PROTOCOL": "up",
"STATUS": "up"
},
{
"DESCRIP": "Leaf-2",
"PORT": "Po2",
"PROTOCOL": "up",
"STATUS": "up"
}
]
}
我只想獲取/列印包含 DESCRIP 中的“Leaf”和 PORT 中的“Po”的塊來執行此操作我在下面使用 jinj2 進行除錯
- debug:
msg: >-
{%- for item in output.parsed -%}
{%- if ('Leaf' in item.DESCRIP) and ('Po' in item.PORT) -%}
"DESCRIP": {{item.DESCRIP}},
"PORT": {{item.PORT}}
{%- endif -%}
{%- endfor -%}
我正在輸出以下輸出,以單行列印所有內容:
TASK [debug] *******************************************************************
ok: [10.2.4.1] => {
"msg": "\"DESCRIP\": Leaf-1,\n \"PORT\": Po4\"\"DESCRIP\": Leaf-2,\n \"PORT\": Po2"
}
我想要的是 dict 鍵值格式/json 格式。像下面這樣:
[{
"DESCRIP": "Leaf-1",
"PORT": "Po4",
},
{
"DESCRIP": "Leaf-2",
"PORT": "Po2",
} ]
如何/在我的代碼除錯 msg 部分修改什么以獲得高于輸出
uj5u.com熱心網友回復:
實作這一目標的一種方法是set_fact使用when條件。
在下面的示例中,我們創建了一個新變數serv_list(最初為空串列),然后在條件匹配時附加DESCRIP和PORT。
- set_fact:
serv_list: '{{ serv_list | default([]) [ { "DESCRIP": item.DESCRIP, "PORT": item.PORT } ] }}'
loop: "{{ output.parsed }}"
when:
- item.DESCRIP is search('Leaf')
- item.PORT is search('Po')
- debug:
var: serv_list
產生:
ok: [localhost] => {
"serv_list": [
{
"DESCRIP": "Leaf-1",
"PORT": "Po4"
},
{
"DESCRIP": "Leaf-2",
"PORT": "Po2"
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/382212.html
