是否可以动态地将Ansible中的vars文件包含到另一个vars文件中?
即。我有vars文件:
---
definitions:
- { product: web_v2, suite: mysuite, include: default_step.yml }
- { product: prod2, suite: mysuite2, include: default_step.yml }
我希望将default_step.yml
的内容添加到字典中。请注意,这是在 vars文件中,因此有关如何从任务中包含vars文件的文档似乎不适用。
我能想到的是用jinja模板化这个文件并使用它的{% include %}
函数,然后从主任务中使用include_vars
,但这似乎很复杂......
答案 0 :(得分:51)
不幸的是,vars文件没有包含语句。
您可以将所有变量放入definitions
字典中,也可以将变量作为另一个字典添加到同一个文件中。
如果您不想将它们放在同一个文件中,可以通过在游戏开始时添加vars文件将它们包含在剧本级别中:
---
- hosts: myhosts
vars_files:
- default_step.yml
或在任务中:
---
- hosts: myhosts
tasks:
- name: include default step variables
include_vars: default_step.yml
答案 1 :(得分:0)
我知道它是一个旧帖子,但今天我遇到了同样的问题,我做的很简单:更改我的剧本,将我的剧本从本地主机发送到服务器,然后用maven命令发送,我这样做了:
cat common_vars.yml > vars.yml
cat snapshot_vars.yml >> vars.yml
# or
#cat release_vars.yml >> vars.yml
mvn ....
答案 2 :(得分:0)
您可以将服务器放在default_step
组中,这些变量将适用于它:
# inventory file
[default_step]
prod2
web_v2
然后将您的default_step.yml
文件移动到group_vars/default_step.yml
。