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



我正在尝试重用通用剧本,以便它们可以在任何更大的场景中播放。

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

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来覆盖剧本,以便我可以保持剧本通用并使用测试变量值进行测试(否则我必须每次使用剧本的特定分支,并且需要合并对每个分支的任何修改......

有没有办法让这个主要group_vars/all优先于一切?您还有其他方法可以实现这样的用例吗?

将此附加文件夹用于变量

inventory/
  group_vars/
    all

确实覆盖了中的值

playbooks/
  build-basic-server/
    group_vars/
      all

playbooks/
  build-basic-server/
    build.xml

但不适用于根

main.yml

这相当于从播放切换到主机变量范围

因此,这是所述问题的一种可能解决方案。

最新更新