![Ansible 剧本用于部署到新服务器并从其他服务器中删除](https://linux22.com/image/1540144/Ansible%20%E5%89%A7%E6%9C%AC%E7%94%A8%E4%BA%8E%E9%83%A8%E7%BD%B2%E5%88%B0%E6%96%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E4%BB%8E%E5%85%B6%E4%BB%96%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E5%88%A0%E9%99%A4.png)
我正在考虑编写一个剧本,当服务器位于某个组中时运行某项任务,当服务器不在组中时运行另一项任务。
假设我有 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
是魔法变量其中包含执行目标所属的所有组的列表。