【发布时间】:2015-04-26 08:56:04
【问题描述】:
假设我们的产品由两个组件组成 - 消费者和聚合器。每个安装的节点都有n 消费者和1 个聚合器。
我希望允许客户对最多 X 集群进行自定义配置,改变每个集群的 n 消费者。
我的库存概念:
( implied
[cluster1_aggregator]
[cluster2_aggregator]
and so on for other groups
)
[clusterX_aggregator]
machine1.example.com
[clusterX_consumer]
machine2.example.com
machine3.example.com
[clusterX_all:children]
clusterX_consumer
clusterX_aggregator
[site:children]
cluster1_all
cluster2_all
...
clusterX_all
我想我会准备好安装包中的所有“:children”组,然后让客户只填写他可用的机器,例如只有 2 个集群(所以会有 cluster3_all:children 存在在他们的主机清单中,但不在 cluster3_aggregator 组中)。
我几乎只在我的剧本中使用角色。有没有一种方法可以仅使用非空库存组自动运行此剧本?我在Ansible - Define Inventory at run time 中看到了可能相关的答案,但是 1)那些期望用户交互的人,我非常想避免这种情况,2)我需要将聚合器和消费者按节点分组,不能有一个庞大的组的消费者,并把第一个 X 作为那个问题。
所有 clusterX 将循环 1 到,然后会有一个角色 hosts:site 将在所有已部署的集群之上进行一些配置。
预期结果:
- Cluster1 有一些主机填写了
[cluster1_aggregator]和[cluster1_consumer],所以部署好了。 - Cluster2 有一些主机填写了
[cluster2_aggregator]和[cluster2_consumer],所以部署好了。 - Cluster3 没有填写
[cluster3_aggregator]或 [cluster3_consumer] 的任何主机,因此未部署。其余簇 4 到 X 也是如此。 - 由于 cluster2 是要部署的最后一个集群,因此对 cluster1 和 cluster2 中的所有计算机都完成了最终的站点范围配置。
在这样的环境下是否可能发生以下情况?
- 检测最高填写的库存部分
- 在编号索引的主机组上循环角色
【问题讨论】:
标签: ansible ansible-playbook inventory