带项目列表的Ansible筛选器
我使用的是Ansible 2.10.7,我需要使用\u items列表过滤带项目列表的Ansible筛选器,ansible,jmespath,Ansible,Jmespath,我使用的是Ansible 2.10.7,我需要使用\u items列表过滤中的特定项 在将与_项一起使用之前消息如下所示: “可解释的事实”:{ “cvp_信息”:{ “版本”:“2020.2.3” }, “设备”:[ { “建筑”:“, “bootupTimeStamp”:1615810038.137913, “bootupTimestamp”:1615810038.137913, “合规性代码”:“, 剧本: --- -名称:演示cv_容器模块的剧本。 主机:cvp_服务器 连接:本地 收
中的特定项
在将与_项一起使用之前
消息如下所示:
“可解释的事实”:{
“cvp_信息”:{
“版本”:“2020.2.3”
},
“设备”:[
{
“建筑”:“,
“bootupTimeStamp”:1615810038.137913,
“bootupTimestamp”:1615810038.137913,
“合规性代码”:“,
剧本:
---
-名称:演示cv_容器模块的剧本。
主机:cvp_服务器
连接:本地
收集事实:不
收藏:
-阿里斯塔
变量:
vars_文件:
-瓦拉斯·伊梅尔
任务:
-名称:“从CVP{{inventory_hostname}收集事实”
arista.cvp.cvu事实:
事实:
装置
-名称:“从CVP打印事实”
调试:
msg:“{item.name}”
带_项:“{{devices}”
在对_项“{devices}}”
使用后,我看到它正在过滤大列表,然后我得到我想要过滤的输出:
ok: [hq] => (item={'hostname': 'rd-sw055', 'danzEnabled': False, 'mlagEnabled': False, 'streamingStatus': 'active', 'status': 'Registered','bootupTimeStamp': 1605618537.210405, 'internalBuildId': '8c8dfbf2-a4d1-420a-9c9c-59f6aa67a14e', 'taskIdList': [], 'tempAction': None, 'memTotal': 0, 'memFree': 0, 'sslConfigAvailable': False, 'sslEnabledByCVP': False, 'lastSyncUp': 0, 'type': 'netelement', 'dcaKey': None, 'containerName': 'HQ',
'name': 'rd-sw055','deviceSpecificConfiglets': ['rd-sw055'], 'imageBundle': ''}) => {
"msg": "rd-sw055"
ok: [hq] => (item={'hostname': 'rd-sw01', 'danzEnabled': False, 'mlagEnabled': False, 'streamingStatus': 'active', 'status': 'Registered','bootupTimeStamp': 1605618537.210405, 'internalBuildId': '8c8dfbf2-a4d1-420a-9c9c-59f6aa67a14e', 'taskIdList': [], 'tempAction': None, 'memTotal': 0, 'memFree': 0, 'sslConfigAvailable': False, 'sslEnabledByCVP': False, 'lastSyncUp': 0, 'type': 'netelement', 'dcaKey': None, 'containerName': 'HQ',
'name': 'rd-sw01','deviceSpecificConfiglets': ['rd-sw01'], 'imageBundle': ''}) => {
"msg": "rd-sw01"
我希望它只显示带有'name':'rd-sw01'
的项目,我该怎么做
我试过使用
loop\u控制:
标签:“{item.name}”
在剧本的结尾,但这将只显示名称值,而不是整个项目值
最终结果:
ok: [hq] => (item={'hostname': 'rd-sw01', 'danzEnabled': False, 'mlagEnabled': False, 'streamingStatus': 'active', 'status': 'Registered','bootupTimeStamp': 1605618537.210405, 'internalBuildId': '8c8dfbf2-a4d1-420a-9c9c-59f6aa67a14e', 'taskIdList': [], 'tempAction': None, 'memTotal': 0, 'memFree': 0, 'sslConfigAvailable': False, 'sslEnabledByCVP': False, 'lastSyncUp': 0, 'type': 'netelement', 'dcaKey': None, 'containerName': 'HQ',
'name': 'rd-sw01','deviceSpecificConfiglets': ['rd-sw01'], 'imageBundle': ''}) => {
"msg": "rd-sw01"
您确实需要一个条件:
-调试:
变量:项目
循环:“{{devices}}”
时间:item.name=='rd-sw01'
回路控制:
标签:“{item.name}”
或者更简单地说,跳过循环:
-调试:
变量:设备|选择属性(“名称”、“等式”、“rd-sw01”)
尝试了这两种方法,编辑后的方法没有“跳过”的效果更好,谢谢!