下面是一个简单的剧本它试图动态地加载变量:动态文件名vars_files
site.yml
---
- hosts: localhost
vars_files:
- "{{ name }}.yml"
tasks:
- debug: var={{ foo }}
变量foo是该文件中定义:
vars/myvars.yml
---
foo: "Hello"
然后剧本运行是这样的:
ansible-playbook test.yml -e "name=myvars"
然而这会导致这个错误:
ERROR! vars file {{ name }}.yml was not found
从我从几个代码片段理解这应该是可能的,从myvars.yml导入的变量。当用1.7.x进行尝试时,它似乎确实可行(尽管我遇到了不同的问题,文件名称输入已正确解析)。
此行为是否发生了变化(可能是对动态变量文件的支持已被删除?)。有没有不同的方式来实现这种行为(我可以使用include_vars任务,但它不太合适)?
编辑:要确保我的剧本结构是正确的,这里是一个GitHub的库:https://github.com/jcechace/ansible_sinppets/tree/master/dynamic_vars
它对我来说是安全的2.0.1.0,你使用的是哪个版本? –
2.0.1所以也许我从OSX运行的事实是问题?我将尝试使用Linux – pseudo
@arbabnazar这里是一个git回购示例 - 只是为了确保结构正常。 https://github.com/jcechace/ansible_sinppets/tree/master/dynamic_vars – pseudo