我们现在正在研究 Ansible 来配置我们的服务器。这是相当默认的 nginx、php-fpm 和 mysql 设置。但是,我想知道这些软件包的安装以及如何使剧本在服务运行时幂等。
对于 nginx,我们有一个默认的 nginx.conf
和 conf.d/
中的一些文件。对于 php,我们有一个 php.ini
、一个 php-fpm.conf
、一个位于 pool.d/
中的池和一些 ini 文件在 conf.d/
中。在每次 ansible playbook 调用时覆盖所有文件的想法是什么?
如果所有配置都被覆盖,即使服务器负载很重,也可以执行 service nginx reload
和 service php5-fpm reload
吗?对于初始安装,reload
不会启动服务器,所以我必须先检查状态,然后根据状态在 start
和 reload
之间切换>?
如果我寻找安装了 nginx 的 playbook,他们通常会使用会重启 nginx 的处理程序。然而,这并不优雅,所以我不太喜欢这种方法:
service: name=nginx state=restarted
一般来说,使用 ansible 并为服务器提供服务的常见模式是什么,例如 nginx、php-fpm 和 mysql 无需强制重启?
最佳答案
service module can do reload使用 state=reloaded
。
如果服务器上已有相同版本,则不会上传配置文件。因此,如果您在处理程序中使用 service: name=nginx state=restarted
,则不会触发重新加载。
您还可以使用 service: name=nginx enable=yes
以便服务在启动时启动(因此无需显式启动
nginx,只需如果需要重新加载
)。
关于php - 对于 ansible,优雅的重新加载是幂等的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20283294/