我在playbooks中使用了一些角色,这些角色在群集中设置了十几个服务,并使用库存组来指定角色的主机。
根据环境,我需要从playbook中的ENV中提取库存。 在常见情况下,大多数服务都不是必需的,因此没有主机可以添加到相应的组,但必须存在组。
如果是静态库存,则非常简单。但是如何在剧本中定义一个空组?
答案 0 :(得分:1)
我找不到如何在剧本中创建空库存组。 然而,我确实找到了如何从Vagrant传递空库存组。它可能几乎为空,例如它不包含主机名,而是包含与任何主机不匹配的主机名模板。
例如:
services.each do |service|
hosts = (ENV["SERVERS_#{service.upcase}"] || "").split(",").map{|i| cluster_nodes[i.to_i]}
groups[service] = hosts
groups[service] = ["stub-a:f"] if groups[service] == []
ansible.groups = groups