用户可定制的 Ansible 清单
User-customizable Ansible inventory
假设我们的产品由两个组件组成 - 消费者和聚合器。每个已安装的节点都有 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 中的所有计算机完成最终站点范围的配置。
在这样的环境下是否可能出现以下情况?
- 检测最高填充库存部分
- 在编号索引的主机组上循环角色
我认为您必须看看 inventory scripts,因为听起来他们可以满足您的需求。
您可以用您选择的语言编写这样的脚本,并且它可以 return 根据您的定义仅有效的集群。
假设我们的产品由两个组件组成 - 消费者和聚合器。每个已安装的节点都有 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 中的所有计算机完成最终站点范围的配置。
在这样的环境下是否可能出现以下情况?
- 检测最高填充库存部分
- 在编号索引的主机组上循环角色
我认为您必须看看 inventory scripts,因为听起来他们可以满足您的需求。
您可以用您选择的语言编写这样的脚本,并且它可以 return 根据您的定义仅有效的集群。