ansible - 将后缀/前缀添加到单个 ansible 变量
问题描述
我有一个定义 ansible 变量的文件role1/vars/main.yml
,要在剧本中使用:
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'}"
解决方案
使用重新创建变量set_fact
似乎工作得很好:
- hosts: localhost
gather_facts: false
vars:
app_name: amazing
tasks:
- set_fact:
app_name: "{{ app_name }} app"
- debug:
var: app_name
推荐阅读
- angular - 下拉菜单在 angular-slickgrid 中不起作用
- python - 熊猫填充最近日期的值
- random - 如何使用 SeedableRng 生成随机数?
- hybris - 性能问题,因为实例太多
- google-sheets - 谷歌表格删除文本是多个特定的单词
- java - JDBC Statement.closeOnCompletion() 应该在下次执行时关闭语句吗?
- python - 使用 Python SDK 的 Azure 数据工厂 HTTP 数据集,找不到参数
- c++ - STM32 和 HAL 函数 GetTick()
- javascript - document.querySelector 没有选择元素并抛出 ReferenceError: document is not defined
- java - 如何测试不返回任何内容的方法?