我们现在正在调查Ansible以配置我们的服务器。这是一个默认的nginx,php-fpm& mysql设置。但是,我想知道这些软件包的安装以及如何使playbook在运行服务时具有幂等性。
对于nginx,我们有一个默认nginx.conf
和conf.d/
中的一些文件。对于php,我们有php.ini
,php-fpm.conf
,pool.d/
中的池和conf.d/
中的一些ini文件。是否想要覆盖每个ansible playbook call上的所有文件?
如果所有配置都被覆盖,即使服务器负载很重,是否可以执行service nginx reload
和service php5-fpm reload
?对于初始安装,reload
无法启动服务器,因此我必须先检查状态并根据该状态在start
和reload
之间切换?
如果我寻找带有nginx安装的playbooks,他们经常使用将重启nginx的处理程序。但是,这并不优雅,所以我不喜欢这种方法:
service: name=nginx state=restarted
一般情况下,使用ansible和配置服务器的常见模式如nginx,php-fpm和mysql ,而不强制重启?
答案 0 :(得分:5)
service module can do reload与state=reloaded
。
如果服务器上已有相同的版本,则不会上传配置文件。因此,如果在处理程序中使用service: name=nginx state=restarted
,则重新加载将不是触发器。
您也可以使用service: name=nginx enable=yes
,以便服务在启动时启动(因此无需明确start
nginx,如果需要,只需reload
。
答案 1 :(得分:4)
在#ansible IRC频道上,我得到了一个有效的答案。 apt系统的一般模式是在安装后启动服务。因此,在配置发生变化的情况下,您可以完全省略start
,仅忽略reload
。
然后设置(例如,采用Nginx)
这应该足够了;如果未安装Nginx,则执行步骤1,2和3。安装Nginx并且配置正常时,不会重新加载。如果我们更新配置,步骤#2会导致更改,从而重新加载。
这应该足以涵盖所有情况。