问题描述
在使用Ansible时,想知道是否可以使用cron每天或每周运行本地的Ansible playbook。他希望在服务器上建立一个LAMP环境,并想知道是否需要定期运行playbook来更新软件包。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
我建议你使用cron来定期运行Ansible playbook。但是,你也需要设置ansible.cfg
文件进行日志记录,并定期检查日志,以确保playbook没有出现问题。
默认情况下,Ansible不会记录日志,所以你需要在ansible.cfg
中进行设置,以便记录日志,以防万一:
[defaults]
log_path = ./ansible.log
此外,你还需要定期检查你的电子邮件,以确保cron/Ansible作业没有出现任何问题。
方案2
使用Ansible运行Ansible可能会违反Ansible的幂等性规则,因此我不建议这样做。你可以选择使用命令行、cron或其他程序作为运行playbook的起点。
以下是一些关于Ansible幂等性的解释:
– 幂等性是指一个操作可以重复执行多次,但最终的结果是相同的。
– Ansible的设计目标之一就是保持幂等性,即使在多次运行playbook时也不会对系统状态产生负面影响。
– 但并非所有的Ansible模块都能保证幂等性,比如一些访问shell的模块,如果没有检查变更是否已经完成,可能会导致系统状态的改变。
– 为了确保playbook的幂等性,你可以在Ansible配置文件中设置日志记录,并定期检查日志,以防止playbook出现问题。
– 在将playbook应用于生产环境之前,建议先在测试环境中进行测试。
方案3
为了保持服务器的安全性,仅仅运行Ansible playbook是不够的。升级软件包并不能保证系统的安全性。例如,内核的安全更新需要重新启动,而某些安全更新可能需要配置更改和/或服务重启。如果你负责这样的服务器,你应该订阅相关的安全更新(通常是邮件列表或Web订阅),并在修复措施到来时及时响应。
从更一般的角度来看,没有办法部署一个暴露在互联网上的服务器,并在无限期的时间内保持其安全性。