vars_files中的动态文件名

时间:2016-04-14 10:54:16

标签: ansible ansible-playbook

以下是一个试图动态加载变量的简单剧本:

site.yml
---
- hosts: localhost
  vars_files:
  - "{{ name }}.yml"
  tasks:
  - debug: var={{ foo }}

变量foo在此文件中定义:

vars/myvars.yml
---
foo: "Hello"

然后playbook就像这样运行:

ansible-playbook test.yml -e "name=myvars"

然而,这会导致此错误:

ERROR! vars file {{ name }}.yml was not found

根据我从几个代码片段中理解的情况,这应该是可能的,并从myvars.yml导入变量。当尝试使用ansible 1.7.x时,它似乎确实有效(尽管我遇到了另一个问题,文件名vas正确解析)。

此行为是否已更改(可能已删除对动态变量文件的支持?)。有没有不同的方法来实现这种行为(我可以使用include_vars任务,但它不太合适)?

编辑:为了确保我的Playbook结构正确,这是一个github存储库:https://github.com/jcechace/ansible_sinppets/tree/master/dynamic_vars

1 个答案:

答案 0 :(得分:3)

只需像这样更改site.yml

- hosts: localhost
  vars_files:
    - "vars/{{ name }}.yml"
  tasks:
    - debug: var={{ foo }}

然后运行如下命令:

ansible-playbook site.yml -e "name=myvars" -c local

希望这会对你有所帮助。