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 軟體包後,我希望它立即殺死守護進程,因此我在軟體包安裝後立即添加元命令,並且 ansible 不會讓我等待。

相關內容