Ansible服务重启失败

Ste*_*iao 22 sshd ansible ansible-playbook

我在使用Ansible重启SSH守护进程时遇到了一些麻烦.

我正在使用截至2015年5月11日的最新软件(Ansible 1.9.1/Vagrant 1.7.2/VirtualBox 4.3.26/Host:OS X 10.10.1/Guest:ubuntu/trusty64)

tl; dr:我调用服务语法的方式似乎有问题.

原始用例问题(处理程序)

剧本

- hosts: all
- remote_user: vagrant
- tasks:

  ...

  - name: Forbid SSH root login
    sudo: yes
    lineinfile: dest=/etc/ssh/sshd_config regexp="^PermitRootLogin" line="permitRootLogin no" state=present
    notify:
      - restart ssh

  ...

- handlers:
  - name: restart ssh
    sudo: yes
    service: name=ssh state=restarted
Run Code Online (Sandbox Code Playgroud)

产量

NOTIFIED: [restart ssh] 

failed: [default] => {"failed": true}

FATAL: all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)

nginx处理程序使用几乎相同的语法成功完成.

任务也失败了

剧本

- name: Restart SSH server
  sudo: yes
  service: name=ssh state=restarted
Run Code Online (Sandbox Code Playgroud)

与处理程序用例相同的输出.

Ad Hoc命令也失败了

贝壳

> ansible all -i ansible_inventory -u vagrant -k -m service -a "name=ssh state=restarted"
Run Code Online (Sandbox Code Playgroud)

库存

127.0.0.1:8022
Run Code Online (Sandbox Code Playgroud)

产量

127.0.0.1 | FAILED >> {
    "failed": true,
    "msg": ""
}
Run Code Online (Sandbox Code Playgroud)

Shell命令在框中工作

当我在SSH中运行并运行通常的命令时,一切正常.

> vagrant ssh
> sudo service ssh restart
ssh stop/waiting
ssh start/running, process 7899
> echo $?
0
Run Code Online (Sandbox Code Playgroud)

命令任务也有效

产量

TASK: [Restart SSH server] ****************************************************
changed: [default] => {"changed": true, "cmd": ["service", "ssh", "restart"], "delta": "0:00:00.060220", "end": "2015-05-11 07:59:25.310183", "rc": 0, "start": "2015-05-11 07:59:25.249963", "stderr": "", "stdout": "ssh stop/waiting\nssh start/running, process 8553", "warnings": ["Consider using service module rather than running service"]}
Run Code Online (Sandbox Code Playgroud)

正如我们在警告中看到的,我们应该使用服务模块,但我仍然不确定障碍在哪里.

Asf*_*azi 27

正如上面的评论所述,这是一个Ansible问题,显然将在2.0版本中修复.

我刚刚更改了我的处理程序以使用该command模块并继续:

- name: restart sshd
  command: service ssh restart
Run Code Online (Sandbox Code Playgroud)

  • 与Ubuntu 14.04.1中的ansible 2.0.1.0和supervisord 3.0b2相同 (2认同)