用户可定制的 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 角色将在所有已部署的集群之上进行一些配置。

预期结果:

在这样的环境下是否可能出现以下情况?

我认为您必须看看 inventory scripts,因为听起来他们可以满足您的需求。

您可以用您选择的语言编写这样的脚本,并且它可以 return 根据您的定义仅有效的集群。