我的剧本
---
- name: Nuovo server GV
gather_facts: no
hosts:
- new-gv.vm
roles:
- ssh_configuration
handlers:
- name: Restart sshd
service:
name: sshd
state: restarted
在ssh_configuration
任务文件中有这个
- name: Setup alternate SSH port
become: yes
become_method: su
become_user: root
lineinfile:
dest: "/etc/ssh/sshd_config"
regexp: "^Port"
line: "Port {{ configured_port }}"
notify:
- Restart sshd
问题是 Restart sshd 没有执行。
我尝试了很多次,进行了干净重启,我确定:“端口 1122”行已添加到远程主机文件中。
我问你如何诊断这个问题,我无法理解处理程序是否没有被触发或者由于某种原因被破坏。
我也尝试添加
- name: Ensure SSH is reloaded if need be
meta: flush_handlers
在这种-vvvv
模式下,我只能看到
META: ran handlers
但如果我没有记错的话,我预计会有“RUN HANDLER”部分
我确信这不是 Ansible Bug,只是因为我的经验不足
答案1
这里的问题是,处理程序在 中定义,playbook
而它本应在角色中定义。位置
- name: Restart sshd
service:
name: sshd
state: restarted
里面roles/ssh_configuration/handlers/main.yml
它应该可以工作。
答案2
我从剧本中删除了处理程序定义。
我创建/roles/ssh_configuration/handlers/main.yml
:
- name: Restart sshd
service:
name: sshd
state: restarted
改变了剧本
---
- name: Nuovo server GV
gather_facts: no
hosts:
- new-gv.vm
roles:
- ssh_configuration
handlers:
- include_tasks: roles/ssh_configuration/handlers/main.yml
这有效