由于主机完全不可用或已被重新利用,我如何处理从Ansible库存组中删除主机的情况?
让我举一个简单的例子来说明3种(典型)Ansible角色。它们不代表实际执行的操作,但有助于解释我的问题:
ufw module
)。 / li>
主要剧本将角色应用于相应清单组中的主机。
现在考虑2种情况。
我编写角色的方式是添加/确保防火墙端口之类的内容。以 nodeexporter 角色服务器为例,为什么我不能简单地刷新防火墙。那么,如果主机将一个组留给主机本身和其他受影响的主机(如Kubernetes示例中的主机),那么如何确保状态正确?
对于Kubernetes,我当前的解决方法是在每个主机上维护一个自动生成的文件,该文件包含允许的IP地址列表。 (在每次运行的剧本上)都与实际授予的IP相匹配。这种方法不适用于例如安装的软件包,如果离开一个组,它们可能会过时。
有更好的方法吗?
答案 0 :(得分:0)
有更好的方法吗?
处理此问题的典型方法是在将服务器重新用作其他角色时从头重新部署服务器。这样可以确保您的服务器从已知状态启动,并且避免了由于过时的程序包/防火墙配置/其他系统配置(不适用于新角色)而导致的问题。
如果您已经使用Ansible进行配置管理,则该过程应该很简单:
答案 1 :(得分:0)
在以前的项目中,我使用两种方法来解决此问题:
ansible-inventory
而不是ansible-playbook
来克隆剧本并仅对本地主机执行。剧本执行可以检索某些信息(主机名,操作系统,位置,环境变量等)来限制执行。我更喜欢这种方法,因为您可以在每次启动时自动执行配置(第一次安装,下次升级)。缺点:您需要在所有VM上使用ansible。为解决第二种情况,我重建了一个完整的配置文件,这是要应用的新参考。并且每次添加或删除计算机时都必须这样做。使用Ansible时,您必须考虑“最终状态”,而新的配置文件是必须删除旧状态的新状态: