我正在开发一个ansible剧本,它将提供一个redis集群。我的playbook有三个组,但是我不知道如何正确地将节点分配给一个组。
出现这个问题是因为我有动态数量的节点。如果请求2个节点,我希望有如下所示的组:

[redis_master]
node1
[redis_slave]
node2

在3的情况下:
[redis_master]
node1
[redis_slave]
node2
[redis_sentinel]
node3

如果是4等:
[redis_master]
node1
node4
[redis_slave]
node2
[redis_sentinel]
node3

有没有我遗漏的范例?

最佳答案

我不确定我是否完全了解情况。通常,您预先定义所有涉及的主机并将它们分组。playbook可能处理的所有主机都需要在资源清册中定义。哪些主机被剧本处理,然后或多或少是固定的。你到底是什么意思?
如果请求x个节点…
我知道您可以使用--limit将playbook限制为最初定义的主机的子集。也可以使用--extra-vars中定义的参数来选择特定组或主机集。但它们仍然需要在资源清册中预先定义,而且在我看来,依赖于组和角色(redis master、slave等)与所涉及的主机数量是很奇怪的(而且容易出错)。
有人说…我想库存脚本可能是你要找的。使用这些脚本,您可以生成动态库存。我认为你不能传递参数,但是你可以导出变量,稍后从脚本中读取它们。
Dynamic Inventory
Developing Dynamic Inventory Sources

关于python - ansible playbook的动态组分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31593210/

10-14 15:59