如何用字符串连接ansible中列表的每个元素

如何用字符串连接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

我在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 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 }}"

事实上,这些过滤器似乎不存在,而且还有一些过滤器存在。请参阅。有用提示-该博客还展示了如何处理前缀大小写。