进行apache正常重启的理想方法是什么?
- name: Restart Apache gracefully
command: apachectl -k graceful
Ansible systemd模块也一样吗?如果没有,有什么区别?谢谢 !
- name: Restart apache service.
systemd:
name: apache2
daemon_reload: yes
state: restarted
答案 0 :(得分:2)
使用Ansible可以做的是确保所有与Apache的建立连接都已关闭(在Ansible术语中为 draining )。
使用wait_for
模块,其条件是等待特定主机和端口上的连接耗尽,并且状态设置为drained
。见下文:
- name: wait until apache2 connections are drained.
wait_for:
host: 0.0.0.0
port: 80
state: drained
注意:您可以将其用于所有Linux网络服务,如果要按Ansible剧本中的特定顺序关闭服务,这将非常方便。
wait_for
指令可用于确保Ansible在完成特定步骤之前不会运行您的剧本。
答案 1 :(得分:0)
service
或systemd
模块中目前不支持优美状态,因为这是特定于某些服务的,状态限于started
,stopped
,restarted
reloaded
和running
。
因此,现在您需要使用在问题中所写的command
模块来执行正常重启,这是唯一合适的解决方案。
但是有issue to support custom status,也许有人会很快实现。