gpt4 book ai didi

ansible - 运行 ansible playbook 之前进行健全性检查 -> 计算主机数

转载 作者:行者123 更新时间:2023-12-02 00:53:15 24 4
gpt4 key购买 nike

我有一个剧本,将设置一个 Redis 集群和 nutcracker作为代理。哪些主机扮演哪些角色是按组定义的。我想在运行任务之前添加健全性检查,即:

  • 是否只有一个代理? (A组1台主机)
  • 是否至少有一个redis节点(>=B组中有1个主机)

我已经有了一个解决方案,尽管我认为它非常丑陋并且认为必须有更好的东西,但我就是找不到它。我当前运行一个本地任务,使用 --list-hosts 参数再次调用 playbook 并检查输出。

  - name: Make sure there is only one proxy defined
shell: ansible-playbook -i {{ inventory_file }} redis-cluster.yml --tags "redis-proxy" --list-hosts
register: test
failed_when: test.stdout.find("host count=1\n") == -1
changed_when: 1 == 2

这可行,但是否有一种简单的方法可以检查组中的主机数量而无需此额外调用?

最佳答案

(免责声明:我觉得我遇到了类似的问题并发现我应该更正此处给出的其他答案。)

Woodham 提到的使用 Jinja2 过滤器的内容是正确的,但使用不正确。它们可以在剧本中使用,但您应该以这种方式使用它们:

vars:
num_hosts: "{{ groups['redis-proxy'] | length }}"

如您所见,我们可以通过这种方式轻松链接过滤器,稍后我们可以检查此变量:

- name: Validate Number of Nodes
fail: msg="The number of nodes must be exactly 1!"
when: num_hosts | int != 1

关于ansible - 运行 ansible playbook 之前进行健全性检查 -> 计算主机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com