ansible 任务不会触发处理程序

ansible 任务不会触发处理程序

我在获取 ansible 角色中的任务以触发处理程序时遇到问题。以下是我正在使用的文件:

roles/services/tasks/postgresql.yml节目

- name: install postgresql packages
  apt: name={{ item }} state=present
  sudo: yes
  with_items:
  - postgresql
  - libpq-dev
  - python-psycopg2
  notify:
  - set postgres password
  - configure md5 security
  - restart postgres server

roles/services/handlers/main.yml节目

- name: set postgres password 
  sudo: yes
  sudo_user: postgres
  postgresql_user: name=postgres password=newpass

- name: configure md5 security
  sudo: yes
  copy: src=pg_hba.conf dest=/etc/postgresql/9.3/main/pg_hba.conf group=postgres owner=postgres backup=yes

- name: restart postgres server
  sudo: yes
  service: name=postgresql enabled=yes state=restarted

当我运行剧本时,任务成功并确认其已更改状态,但不会触发处理程序。这是该角色中的最后一个任务,完成后,ansible 将继续执行剧本中下一个角色中的第一个任务:

TASK: [services | install postgresql packages] ******************************** 
changed: [IP.REMOVED.##] => (item=postgresql,libpq-dev,python-psycopg2)

TASK: [passenger | install passenger gem] ************************************* 

我尝试过各种方法来改变缩进,但都没有成功。我希望有新眼光的人能发现我遗漏了什么。

答案1

你可能等待的时间不够长。Ansible 会尽可能长时间等待处理程序。如果你想执行所有已排队的处理程序,请尝试

 - meta: flush_handlers

我发现它非常方便。例如,安装 Debian 软件包后,我希望它立即终止守护进程,因此我在软件包安装后立即添加 meta 命令,这样 ansible 就不会让我等待。

相关内容