Ansible2.4 playbook使用import_playbook时的变量优先级

时间:2017-11-08 16:05:28

标签: ansible

我正在尝试重复使用通用手册,以便可以在任何更大的场景中播放。

考虑构建基本服务器剧本(由角色组成),可以在覆盖通用剧本变量的同时在不同的云提供商上运行。

group_vars/
  all
playbooks/
  build-basic-server/
    group_vars/
      all
    roles/
      firewall/
      web/
      ...
    build.yml 
roles/
  my-cloud-provider/ or container/
main.yml (with - import_playbook: playbooks/build-basic-server/build.yml)

这很有效,但我的麻烦在于我不能依赖主group_vars/all优先于playbooks/build-basic-server/group_vars/all

我需要主group_vars/all来覆盖playbook,这样我就可以保持playbook的通用性和testable值与测试变量值一致(否则我必须按照每次使用情况使用该剧本的特定分支,并且需要将任何修改合并到每个分支......)。

有没有办法让这个主group_vars/all优先于所有东西? 你有其他方法来实现这样的用例吗?

1 个答案:

答案 0 :(得分:0)

将此附加文件夹用于变量

inventory/
  group_vars/
    all

会覆盖

中的值
playbooks/
  build-basic-server/
    group_vars/
      all

代表

playbooks/
  build-basic-server/
    build.xml

但不适用于root

main.yml

这相当于从Play切换到主持人Variable Scope

这是解决上述问题的唯一解决方案。