为单个 ansible 变量添加后缀/前缀

时间:2021-03-16 13:23:19

标签: ansible

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

1 个答案:

答案 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