我试图将'ansible_hostname'作为前缀添加到数组中的每个项目,但是得到两个不同的结果。
我用变量声明了数组,在不使用循环的情况下传递主机名时需要帮助。
方案1:
- name: test_array
set_fact:
test_array: ["This is test1 {{ansible_hostname}}", "This is test2"]
- set_fact:
test_fact: "{{ test_array | map('regex_replace', '^(.*)$', ' {{ansible_hostname}}, \\1') | join('\n') }}"
output:
"test_fact": " {{ansible_hostname}}, This is test1 control\n {{ansible_hostname}}, This is test2"
方案2:
- name: test_array
set_fact:
test_array: ["This is test1", "This is test2"]
- set_fact:
test_fact: "{{ test_array | map('regex_replace', '^(.*)$', ' {{ansible_hostname}}, \\1') | join('\n') }}"
output:
"test_fact": " host, This is test1 control\n host, This is test2"
答案 0 :(得分:2)
您不能在jinja2扩展中使用jinja2扩展。您必须使用+
运算符将主机名与其余的regexp替换连接起来:
- set_fact:
test_fact: "{{ test_array | map('regex_replace', '^(.*)$', ansible_hostname + ', \\1') | join('\n') }}"