ansible:处理程序未触发

ansible:处理程序未触发

我的剧本

---
- 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
      

这有效

相关内容