如何在带有ansible的vars文件中包含vars文件?

jbr*_*own 39 ansible

是否可以动态地将Ansible中的vars文件包含到另一个vars文件中?

即我有vars文件:

---
definitions:
- { product: web_v2, suite: mysuite, include: default_step.yml }
- { product: prod2, suite: mysuite2, include: default_step.yml }
Run Code Online (Sandbox Code Playgroud)

我希望将内容default_step.yml添加到字典中.请注意,这是在vars文件中,因此有关如何从任务中包含vars文件的文档似乎不适用.

我能想到的是用jinja模板化这个文件并使用它的{% include %}功能,然后include_vars从主要任务中使用,但这似乎很复杂......

jon*_*tan 55

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

您可以将所有变量放入definitions字典中,也可以将变量作为另一个字典添加到同一文件中.

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

---
- hosts: myhosts

  vars_files:
    - default_step.yml
Run Code Online (Sandbox Code Playgroud)

或在任务中:

---
- hosts: myhosts

  tasks:
    - name: include default step variables
      include_vars: default_step.yml
Run Code Online (Sandbox Code Playgroud)