我正在考虑编写一个剧本,当服务器位于某个组中时运行某项任务,当服务器不在组中时运行另一项任务。
假设我有 office1 及其所有服务器,并且有一个主 DHCP 服务器:
[office1]
server1
server2
server3
[dhcp]
server2
我想确保我只有一个 DHCP 服务器:
- include: tasks/add-dhcp.yml
when: inventory_hostname in dhcp
- include: tasks/remove-dhcp.yml
when: inventory_hostname not in dhcp
因此,当我将 DHCP 更改为 server3 时,它将安装在 3 上并从 2 中删除。当完成新的 DHCP 部署后,该卷将在所有 office1 服务器上运行。
对此有什么想法吗?这是一个坏主意吗?您将如何解决这个问题?
答案1
如果这种方法对你有用,那就采用它吧。定义配置的方式没有好坏之分。除此之外,你还可以使用变量。
但条件应该如下所示:
- include_tasks: tasks/remove-dhcp.yml
when: `dhcp` not in group_names
group_names
是魔法变量其中包含执行目标所属的所有组的列表。