【问题标题】:User-customizable Ansible inventory用户可定制的 Ansible 库存
【发布时间】: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


    【解决方案1】:

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

    您可以用您选择的语言编写这样的脚本,它只能返回您定义的有效集群。

    【讨论】:

    • 看来这是最好的选择,非常感谢!
    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多