Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ansible在vars文件中包含vars文件?_Ansible - Fatal编程技术网

如何使用ansible在vars文件中包含vars文件?

如何使用ansible在vars文件中包含vars文件?,ansible,Ansible,是否可以将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文件中,因此关于如何从

是否可以将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\u vars
,但这似乎很复杂…

不幸的是,vars文件没有include语句

您可以将所有变量放入
定义
字典,或者将变量作为另一个字典添加到同一文件中

如果不想将它们放在同一个文件中,可以通过在播放开始时添加vars文件,在playbook级别将它们包括在内:

---
- hosts: myhosts

  vars_files:
    - default_step.yml
或在任务中:

---
- hosts: myhosts

  tasks:
    - name: include default step variables
      include_vars: default_step.yml

我知道这是一篇老文章,但今天我遇到了同样的问题,我所做的很简单:更改脚本,将剧本从本地主机发送到服务器,然后使用maven命令发送,我做了以下操作:

cat common_vars.yml > vars.yml
cat snapshot_vars.yml >> vars.yml
# or 
#cat release_vars.yml >> vars.yml
mvn ....

您可以将您的服务器放入
default\u步骤
组,这些变量将应用于该组:

# inventory file
[default_step]
prod2
web_v2

然后只需将
default\u step.yml
文件移动到
group\u vars/default\u step.yml

vars文件没有内置的include语句。当您使用
include\u vars
任务包含vars文件时,字典的内容将被覆盖,除非您在Ansible配置中定义了
hash\u behavior=merge
。或者,您可以使用我的动作插件[
include\u vars\u merged
][1]。不过,这两个变体只会在第一级合并词典。也许你可以使用我的插件作为基础,实现深度合并,或者直接使用真正的
包含
。[1] :如何合并vars文件?例如有一个
defaults.yml
和一个小的
覆盖.yml