的Ansible最佳实践文档recommends分离库存:如何在Ansible中的不同库存之间共享group_vars?
inventories/ production/ hosts.ini # inventory file for production servers group_vars/ group1 # here we assign variables to particular groups group2 # "" host_vars/ hostname1 # if systems need specific variables, put them here hostname2 # "" staging/ hosts.ini # inventory file for staging environment group_vars/ group1 # here we assign variables to particular groups group2 # "" host_vars/ stagehost1 # if systems need specific variables, put them here stagehost2 # ""
我的分期和生产环境都以同样的方式构成。我在两种环境中都有相同的组。事实证明,我也有相同的group_vars相同的组。这意味着我想消除冗余。
有没有办法在不同库存之间共享一些group_vars?
作为一种变通我开始把共享group_vars进入角色。
my_var:
my_group:
- { var1: 1, var2: 2 }
这使得有可能通过交叉主机的组与定义的VAR遍历一些增值经销商:
with_items: "{{group_names | intersect(my_var.keys())}}"
但是,这是一个有点复杂理解,我觉得角色不应该知道任何关于团体的事
我想单独大部分库存,但分享一些group_vars在一个易于理解的方式。是否有可能将全局group_vars与库存特定的group_vars合并?
但这只适用于剧本。即席命令将失败。有没有办法自定义ad-hoc命令执行,以便读取全局group_vars? – ceving
另一个问题似乎是,如果我想从不同的组收集变量,我必须设置'hash_behaviour = merge'。以及哈希中的数组值如何? – ceving
这不适用于ad-hoc。列表不能自动合并,你必须使用一些手动任务。 –