如何用字符串连接ansible中列表的每个元素
我在ansible变量中有一个string元素的列表。我正在研究如何使用已定义的字符串附加到列表中的每个元素 你知道我该怎么做吗?我没有找到这样做的方法 输入:如何用字符串连接ansible中列表的每个元素,ansible,jinja2,Ansible,Jinja2,我在ansible变量中有一个string元素的列表。我正在研究如何使用已定义的字符串附加到列表中的每个元素 你知道我该怎么做吗?我没有找到这样做的方法 输入: [ "a", "b", "c" ] [ "a-Z", "b-Z", "c-Z" ] 输出: [ "a", "b", "c" ] [ "a-Z", "b-Z", "c-Z" ] 您可以为此使用join。请参阅下面的代码: 剧本--> 输出--> 使用简单的过滤器 shell>cat filter\u插件/string\u filt
[ "a", "b", "c" ]
[ "a-Z", "b-Z", "c-Z" ]
输出:
[ "a", "b", "c" ]
[ "a-Z", "b-Z", "c-Z" ]
您可以为此使用
join
。请参阅下面的代码:
剧本-->
输出-->
使用简单的过滤器
shell>cat filter\u插件/string\u filters.py
def字符串前缀(前缀s):
返回前缀+s
def字符串_后缀(后缀,s):
返回s+后缀
类FilterModule(对象):
''Ansible过滤器。Python字符串操作。“”
def过滤器(自):
返回{
“字符串前缀”:字符串前缀,
“字符串后缀”:字符串后缀
}
下面的任务
-设置事实:
输出:“{input}映射('string_前缀','-Z')|list}”
-调试:
变量:输出
给予
“输出”:[
“a-Z”,
“b-Z”,
“c-Z”
]
相同的输出给出了下面的循环
-设置事实:
输出:{{output}默认值([])+[item+'-Z']}
循环:“{input}}”
-调试:
变量:输出
我真的不喜欢使用附加过滤器或循环。然而,我偶然发现这篇博文使用了一种在Ansible 2.9.x中工作的不同方法
- set_fact:
output: "{{ list_to_suffix | product(['-Z']) | map('join') | list }}"
下面是如何在一行中同时使用前缀和后缀
- debug:
var: result
vars:
prefix: foo1
suffix: foo2
a_list: [ "bar", "bat", "baz" ]
result: "{{ [prefix] | product(a_list) | map('join') | list | product([suffix]) | map('join') | list }}"
事实上,这些过滤器似乎不存在,而且还有一些过滤器存在。请参阅。有用提示-该博客还展示了如何处理前缀大小写。