ansible - Ansible:如何使用变量进行过滤
问题描述
我有 ansible-playbook,它给出了debug
输出中的行列表。我可以使用string
(exp:CUST)过滤调试输出,但我正在努力使用变量过滤列表。
- debug:
msg: "{{ List.msg | select('match', '^(CUST)[0-9]+') | list }}"
List msg output:
CUST1
CUST2
NEW1
NEW2
从上面的调试命令中,我在过滤后的输出中得到 CUST1、CUST2。
- set_fact:
filter: "{{ fileout.results[0].content }}"
上面filter
生成“CUST”,我想filter
在上面的调试命令中使用这个变量。
使用下面的语法我什么也得不到,可能是 ansible 没有把它当作适当的变量。
- debug:
msg: "{{ List.msg | select('match', '^("{{ filter }}")[0-9]+') | list }}"
请帮忙。
提前致谢。
解决方案
可以隔离正则表达式的声明filter
并简化引用。例如
vars:
List:
msg: ['CUST1','CUST2','NEW1','NEW2']
Patterns: ['CUST','NEW']
tasks:
- debug:
msg: "{{ List.msg | select('match', filter) | list }}"
vars:
filter: '^{{ item }}[0-9]+'
loop: "{{ Patterns }}"
给
"msg": [
"CUST1",
"CUST2"
]
"msg": [
"NEW1",
"NEW2"
]
推荐阅读
- swiftui-navigationlink - SwiftUI NavigationView,如果 NavigationLink 在 NavigationBarItem 内,则返回
- vb.net-2010 - BunifuMaterialTextbox isPassword 不起作用
- export-to-csv - 如何在使用 CsvHelper 写入 csv 字符串/文件的过程中替换字符/符号?
- javascript - 如何使用 contenteditable 防止删除内部跨度?
- swiftui - WatchOS,SwiftUI:如何以“视图”为正文发送本地通知
- python-3.x - 使用 Matplotlib 绘制二进制 Numpy 数组的边界
- c# - 该值不是“System.Int32”类型,不能在此通用集合中使用
- loops - 如何在 ansible 和导出变量的循环内创建循环?
- ubuntu - 不同进程的几个分段错误
- node.js - AWS Redis 读取器端点和 ioredis