用户可自定义的Ansible库存

时间:2015-02-24 16:14:50

标签: ansible ansible-playbook 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

我以为我准备了所有":孩子"安装包中的组,然后允许客户只填写他可用的机器,例如只有2个集群(因此将有cluster3_all:子节点存在于其主机库存中,但不存在于cluster3_aggregator组中。)

我几乎只在我的剧本中使用角色。有没有办法只使用非空库存组自动运行此剧本?我在Ansible - Define Inventory at run time中看到了可能相关的答案,但是1)那些期望用户交互,我非常希望避免,2)我需要将聚合器和消费者按节点分组,不能拥有一大群消费者,并根据这个问题采取第一个X.

所有clusterX都将循环为1,然后将有一个主机:site的角色,它将在所有已部署的集群之上进行一些配置。

预期结果:

  • Cluster1的部分主机已填入[cluster1_aggregator][cluster1_consumer],因此已部署。
  • Cluster2的某些主机已填入[cluster2_aggregator][cluster2_consumer],因此已部署。
  • Cluster3没有填充[cluster3_aggregator]或[cluster3_consumer]的任何主机,因此未部署。剩下的簇4到X的相同的apllies。
  • 由于cluster2是要部署的最后一个集群,因此将对cluster1和cluster2中的所有计算机执行最终的站点范围配置。

在这样的环境中,以下是否可行?

  • 检测最高填充库存部分
  • 在数字索引主机组上循环角色

1 个答案:

答案 0 :(得分:1)

我认为你必须看看inventory scripts,因为听起来他们可以做你正在寻找的事情。

您可以使用您选择的语言编写此类脚本,并且只能根据您的定义返回有效的群集。