Ansible使用systemd而不是服务模块

n3r*_*3rd 11 ansible devops

我刚刚用Ansible 2.2和Debops弄湿了,我遇到了以下问题.我有一个主机test-host,我部署了一个MySQL服务器(使用geerlingguy.mysql).

该角色使用以下处理程序重新启动服务:

---
- name: restart mysql
  service: "name={{ mysql_daemon }} state=restarted sleep=5"
Run Code Online (Sandbox Code Playgroud)

我认为,它使用Ansibles 服务模块来重启服务器.但是,失败了:

unsupported parameter for module: sleep
Run Code Online (Sandbox Code Playgroud)

所以只是为了排除那个自定义角色的任何怪异,我试图像这样直接执行模块:

ansible test-host -b -m service -a 'name=mysql sleep=5 state=restarted'
Run Code Online (Sandbox Code Playgroud)

结果相同.

使用更详细的输出显示运行Ansible(除其他外):

Running systemd
Using module file /usr/local/lib/python2.7/site-packages/ansible-2.2.0-py2.7.egg/ansible/modules/core/system/systemd.py
Run Code Online (Sandbox Code Playgroud)

因此,似乎使用该systemd模块而不是service(查看模块显示它确实是别名service).并且,瞧,systemd不支持sleep参数.

如何解决这个问题?

Jir*_*uda 3

您可以通过在剧本中添加另一个步骤来解决这个问题,如下所示:

- name: restart mysql
  service: "name={{ mysql_daemon }} state=restarted"
  register: mysql_service

- name: pause after mysql restart
  pause: "seconds=5"
  when: mysql_service.changed
Run Code Online (Sandbox Code Playgroud)