【发布时间】:2019-05-03 08:24:04
【问题描述】:
我如何处理从 Ansible Inventory Group 中移除的主机,无论是因为主机完全不可用还是重新调整用途?
让我举一个 3 个(示例性)Ansible 角色的简短示例。它们并不代表实际做了什么,但有助于解释我的问题:
-
webserver 角色安装某个 webserver 应用程序,将 HTML 内容复制到目标主机并在防火墙中打开端口 80 和/或 443(例如,使用
ufw module)。 - Kubernetes 角色将主机加入现有的 Kubernetes 集群。为了使网络正常工作,它会在受影响的主机和所有其他集群成员上打开防火墙端口。
- nodexporter 角色安装 Prometheus Node Exporter 并在防火墙中打开其端口以允许来自某个 Prometheus 服务器的传入连接。
主剧本将角色应用于相应库存组中的主机。
现在考虑两种情况。
- 主机是 nodeexporter 和 webserver 组的成员。主机需要重新用于其他目的,因此从 webserver Inventory Group 中删除。这仍然使端口 80/443 保持打开状态。
- 物理主机是 nodeexporter 和 kubernetes Inventory Groups 的成员。机器有缺陷并从系统中完全删除。这会在所有剩余的 Kubernetes 节点上打开旧 IP 的防火墙规则。
我编写角色的方式是添加/确保防火墙端口等内容。以 nodeexporter 角色服务器为例,为什么我不能简单地刷新防火墙。那么,如果主机将组留给主机本身和其他受影响的主机(如 Kubernetes 示例中),我如何确保正确的状态?
我目前针对 Kubernetes 案例的解决方法是在每个主机上维护一个自动生成的文件,其中包含允许的 IP 地址列表。这(在每个剧本运行中)与实际授予的 IP 匹配。这种方法不适用于例如已安装的软件包,如果留下一个组,可能会变得陈旧。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: ansible