是一个优雅的重载幂等的安全吗?

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

对于nginx,我们有一个默认的nginx.confconf.d/一些文件。 对于php,我们有一个php.ini ,一个php-fpm.conf ,一个在pool.d/的池和一些在conf.d/ ini文件。 覆盖每个正确的剧本通话中的所有文件是否是这个想法?

如果所有的configuration都被覆盖,那么即使服务器负载很重时,是否可以做一个service nginx reloadservice php5-fpm reload加载? 对于初始安装, reload不会启动服务器,所以我必须先检查状态,并基于此,在startreload之间切换?

如果我用nginx安装寻找剧本,他们通常会使用处理程序来重新启动nginx。 但是,这并不优雅,所以我不太喜欢这种方法:

 service: name=nginx state=restarted 

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

服务模块可以使用state=reloaded

如果服务器上已有相同的版本,配置文件将不会被上传。 因此,如果在处理程序中使用service: name=nginx state=restartedhttp://www.ansibleworks.com/docs/playbooks.html#handlers-running-operations-on-change ),则重装将不会触发。

你也可以使用service: name=nginx enable=yes所以服务在启动时启动(因此不需要明确start nginx,只需要reload )。

在#ansible IRC频道我已经得到了一个有效的答案。 apt系统的一般模式是服务在安装后启动。 所以你可以完全省略start ,只有在配置改变的情况下才能reload

然后设置(例如,Nginx被采取)

  1. 安装Nginx
  2. 覆盖所有配置文件
  3. 如果在#2中更改了一些内容,请运行重新加载

这应该是足够的; 当Nginx没有安装时,执行步骤1,2和3。 当Nginx安装并且配置正常时,不会发生重新加载。 如果我们更新配置,步骤#2正在导致更改,所以重新加载发生。

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