Filter ansible检查最大编号列表

Filter ansible检查最大编号列表,filter,ansible,max,Filter,Ansible,Max,我对Ansible中的脚本有问题。我想检查Cisco NXOS中路线图的最后一个序列号,我做了下一步: 我的想法是显示输出,然后用map('regex_replace')删除除数字以外的所有内容 在角色内部: vars文件: 序列:10 任务文件: --- -名称:查看路线图 nxos_命令: 命令:sh route map | inc TEST-map 寄存器:输出 -名称:计算最大数量 设定事实: 最大序号:| {{output.stdout_line[0]| map('regex_rep

我对Ansible中的脚本有问题。我想检查Cisco NXOS中路线图的最后一个序列号,我做了下一步:

我的想法是显示输出,然后用map('regex_replace')删除除数字以外的所有内容

在角色内部:

vars文件:

序列:10
任务文件:

---
-名称:查看路线图
nxos_命令:
命令:sh route map | inc TEST-map
寄存器:输出
-名称:计算最大数量
设定事实:
最大序号:|
{{output.stdout_line[0]| map('regex_replace','route-map TEST-map,permit,sequence','')| list | max}
-名称:计算要使用的数字
设定事实:
求和:{(max_seq_number | int)+(sequence | int)}”
它可以工作,但是如果前缀的数量超过90,它就会失败

结果是:

“标准输出行”:[
[
“路线图测试图,许可证,序列1”,
“路线图测试图,许可证,序列10”,
“路线图测试图,许可证,序列20”,
“路线图测试图,许可证,序列30”,
“路线图测试图,许可证,序列40”,
“路线图测试图,许可证,序列50”,
“路线图测试图,许可证,序列60”,
“路线图测试图,许可证,序列70”,
“路线图测试图,许可证,序列80”,
“路线图测试图,许可证,序列90”,
“路线图测试图,许可证,序列100”,
“路线图测试图,许可证,序列110”,
“路线图测试图,许可证,序列120”,
路线图测试图,许可证,序列130
]
]
}
任务[检查:计算最大数量]**********************************************************************************************************************************************************************
任务路径:/ansible/Config Generator/roles/checks/tasks/Route map SequenceNumber.yml:6
确定:[本地主机]=>{
“可解释的事实”:{
**最大序号:“90\n”**
},
“更改”:错误
}
任务[检查:计算要使用的数量]*******************************************************************************************************************************************************************
任务路径:/ansible/Config Generator/roles/checks/tasks/Route map SequenceNumber.yml:10
确定:[本地主机]=>{
“可解释的事实”:{
“总和”:“100”
},
“更改”:错误
}
有人知道为什么最大数字是90而不是130吗

如果我在90之前使用数字,效果很好,但是超过100就不行了。你知道吗


谢谢

您正在将值作为字符串进行比较,因此结果完全符合预期。“90”(以
9
开头)在字母表中的位置比“130”(以
1
开头)要远

您需要比较as int以获得更大的int值

以下显示了与解决方案的差异:

---
-主机:本地主机
收集事实:错误
变量:
#带原始数据的简单一行代码,用于演示
输出:{“stdout_lines”:[[“路线图测试图,许可证,序列1”,“路线图测试图,许可证,序列10”,“路线图测试图,许可证,序列20”,“路线图测试图,许可证,序列30”,“路线图测试图,许可证,序列40”,“路线图测试图,许可证,序列50”,“路线图测试图,许可证,序列60”路线图测试图,许可证,序列70”,“路线图测试图,许可证,序列80”,“路线图测试图,许可证,序列90”,“路线图测试图,许可证,序列100”,“路线图测试图,许可证,序列110”,“路线图测试图,许可证,序列120”,“路线图测试图,许可证,序列130”]}
任务:
-名称:显示最大字符串值
调试:
味精:>-
{{
输出.标准输出线[0]
|映射('regex_replace','route-map TEST-map,permit,sequence(\d+).*','\1')
|马克斯
}}
-名称:显示最大整数值
调试:
味精:>-
{{
输出.标准输出线[0]
|映射('regex_replace','route-map TEST-map,permit,sequence(\d+).*','\1')
|映射('int')
|马克斯
}}
其中:

PLAY [localhost] ***********************************************************************************************************************************************************************************************************************

TASK [show max string value] ***********************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "90"
}

TASK [show max int value] **************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "130"
}

PLAY RECAP *****************************************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

您正在将值作为字符串进行比较,因此结果完全符合预期。“90”(以
9
开头)在字母表中的位置比“130”(以
1
开头)要远

您需要比较as int以获得更大的int值

以下显示了与解决方案的差异:

---
-主机:本地主机
收集事实:错误
变量:
#带原始数据的简单一行代码,用于演示
输出:{“stdout_lines”:[[“路线图测试图,许可证,序列1”,“路线图测试图,许可证,序列10”,“路线图测试图,许可证,序列20”,“路线图测试图,许可证,序列30”,“路线图测试图,许可证,序列40”,“路线图测试图,许可证,序列50”,“路线图测试图,许可证,序列60”路线图测试图,许可证,序列70”,“路线图测试图,许可证,序列80”,“路线图测试图,许可证,序列90”,“路线图测试图,许可证,序列100”,“路线图测试图,许可证,序列110”,“路线图测试图,许可证,序列120”,“路线图测试图,许可证,序列130”]}
任务:
-名称:显示最大字符串值
调试:
味精:>-
{{
输出.标准输出线[0]
|映射('regex_replace','route-map TEST-map,permit,sequence(\d+).*','\1')
|马克斯
}}
-名称:显示最大整数值
调试:
味精:>-
{{
输出.标准输出线[0]
|映射('regex_replace','route-map TEST-map,permit,sequence(\d+).*','\1')
|映射('int')
|马克斯
}}
其中:

PLAY [localhost] ***********************************************************************************************************************************************************************************************************************

TASK [show max string value] ***********************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "90"
}

TASK [show max int value] **************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "130"
}

PLAY RECAP *****************************************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

您好。请编辑您的问题并正确设置其格式,特别是代码块和输出。谢谢。您好。请编辑您的问题