我在 role1/vars/main.yml
中有一个定义 ansible 变量的文件,用于剧本:
app_name: "amazing"
稍后我想在另一个文件 role1/vars/over-write-main.yml
中为其添加后缀:
app_name: "{{ app_name }} app"
这是一个更复杂的项目的一部分,其中定义了 app_name
,然后在模板中使用,因为我没有访问权限。所以我们的想法是简单地将后缀添加到变量中。但是我可以添加一个新任务,或者一个新的变量文件。
但是我从 ansible 得到了一个很长的重复错误
"AnsibleError: An unhandled exception occurred while templating '{{ app_name}} *.feedzai.live'.
Error was a <class 'ansible.errors.AnsibleError'>, original message: An unhandled exception occurred while templating '{{ app_name}} *.feedzai.live'.
Error was a <class 'ansible.errors.AnsibleError'>, original message: An unhandled exception occurred while templating '
...
Error was a <class 'ansible.errors.AnsibleError'>, original message: recursive loop detected in template string: {{ app_name }} app"
我找到了很多关于如何对列表执行此操作的解释,而不是对单个变量执行此操作。我是否需要将其转换为列表然后再转换回来?
我也试过没有成功:app_name: "{{ app_name + 'app'}"
答案 0 :(得分:2)
使用 set_fact
重新创建变量似乎工作得很好:
- hosts: localhost
gather_facts: false
vars:
app_name: amazing
tasks:
- set_fact:
app_name: "{{ app_name }} app"
- debug:
var: app_name