我理解Ansible是如何工作的,它是用来做什么的。
但是,我想知道在Ansible中是否有一种方法或特性(在开源或企业版中),我们可以确保VM实例或服务器的配置总是与Ansible同步吗?
例如:
我用Ansible安装了一些东西(比如MySQL服务器,旋转一些码头容器等等)。在谷歌计算实例上。现在,过了一段时间,我手动将SSH放入这个VM中,并停止Ansible创建的docker容器。是否可以通知Ansible,以便再次创建容器?
因此,如果Ansible将状态A中的VM的配置设置为状态A,而另一个用户手动将状态更改为状态B,那么是否有一种方法可以将Ansible通知此更改并再次运行播放簿将配置设置为状态A?
发布于 2020-09-03 05:46:35
简单的答案是“是”,您可以使用Ansible来监视配置,但是您需要做一些额外的工作。正如Vasily在他们的回答中所指出的,Ansible没有内置的触发机制,所以您需要一些东西来触发状态的收敛。这可以通过几种方式完成,最简单的可能是ansible-pull。作为docs状态,ansible-pull
..。将ansible的默认推送体系结构转换为具有几乎无限缩放潜力的拉式架构。可以调优设置剧本,以将cron频率、日志记录位置和参数更改为“ansible-拉”。这对于极端规模化和定期补救都是有用的。
重点补充。
Ansible是幂等的,所以它知道目标机器的状态,与Vasily的答案状态相反-它只是不像Terraform那样坚持它。
您真正的问题听起来不像您提出的问题(“可以使用Ansible来确保机器的状态吗?”),而是“我如何检测配置漂移并触发补救?”
如果你认为这是一个监察问题,你可以将问题重新界定为“我应如何监察生产中的服务?”。监视意味着对状态变化发出警报,这会触发补救措施。在您的情况下,您将在服务的健康检查上定义一个警报,当触发时,执行收敛到所需状态的剧本。
既然你已经把时间花在写“Ansible剧本”上了,那么重复使用它就有意义了。最简单的方法是使用相同的剧本来调用cron,它每5分钟左右运行一次ansible-pull,这取决于您的具体情况。
发布于 2020-09-03 05:01:39
Ansible不是像Terraform那样的状态管理器,而是一个自动化工具。我认为保持状态A配置的唯一方法是在cron中运行ansible。我用厨师自动化工具看到了这样的用例。
https://devops.stackexchange.com/questions/12331
复制相似问题