ansible - vars_files中的动态文件名

标签 ansible ansible-playbook

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

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中导入变量。当尝试使用ansible 1.7.x时,它似乎确实可以工作(尽管我遇到了另一个问题,文件名vas可以正确解析)。

此行为是否已更改(也许已删除了对动态变量文件的支持?)。是否有其他方法可以实现此行为(我可以使用include_vars任务,但是不太合适)?

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

最佳答案

像这样更改您的site.yml:

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

然后运行以下命令:
ansible-playbook site.yml -e "name=myvars" -c local

希望这会帮助你。

关于ansible - vars_files中的动态文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36620963/

相关文章:

ssh - Ansible 无法与 SSH 连接(横幅交换)

Ansible:我们可以异步运行包含剧本吗?

yaml - 如何在同一任务中展开多个列表

ansible - 如何使用 ansible 备份文件和文件夹?

Ansible 日期变量

Ansible with_subelements 默认值

ansible - 如果启用了 ufw,如何运行 ansible 任务?

Ansible - 使用用户输入选择变量

ansible - 如果某些文件发生更改,我如何运行 ansible 命令

ansible - 一个正确的 YAML 文件是否足以用于正确的 ansible 剧本,除了语法错误吗?