对于ansible来说,优雅的重载是幂等的吗?

Jur*_*man 6 php mysql nginx provisioning ansible

我们现在正在调查Ansible以配置我们的服务器.这是一个默认的nginx,php-fpm和mysql设置.但是,我想知道这些软件包的安装以及如何使playbook在运行的服务中具有幂等性.

对于nginx,我们有一个默认值nginx.conf和一些文件conf.d/.对于php,我们有一个php.ini,一个php-fpm.conf,一个池pool.d/和一些ini文件conf.d/.是否想要覆盖每个ansible playbook call上的所有文件?

如果所有配置都被覆盖,是否可以执行service nginx reload,service php5-fpm reload即使服务器负载很重?对于初始安装,a reload将无法启动服务器,因此我必须首先检查状态并根据它,在start和之间切换reload

如果我寻找带有nginx安装的playbooks,他们经常使用将重启nginx的处理程序.但是,这不是优雅的,所以我不喜欢这种方法:

service: name=nginx state=restarted
Run Code Online (Sandbox Code Playgroud)

一般来说,使用ansible和配置服务器与 nginx,php-fpm和mysql等服务而不强制重启的常见模式什么?

leu*_*cos 5

服务模块可以做到重载state=reloaded.

如果服务器上已存在相同版本,则不会上载配置文件.因此,如果您service: name=nginx state=restarted在处理程序中使用,则重新加载将不会是触发器.

您也可以使用,service: name=nginx enable=yes因此服务在启动时启动(因此start,只有reload在需要时才需要明确地使用nginx ).


Jur*_*man 4

在 #ansible IRC 频道上我已经得到了一个有效的答案。apt 系统的一般模式是安装后启动服务。因此,您可以完全省略start,并且仅reload在配置更改的情况下。

设置如下(以 Nginx 为例)

  1. 安装 Nginx
  2. 覆盖所有配置文件
  3. 如果 #2 中发生了变化,请重新加载

这应该足够了;当未安装Nginx时,执行步骤1,2和3。当 Nginx 安装并且配置正确时,不会发生重新加载。如果我们更新配置,第 2 步将导致更改,因此会发生重新加载。

这应该足以涵盖所有情况。