Ansible notify

notify 很方便,可以先不執行 task,等到都執行完了才執行 handler 裡的 task。

但我遇到明明有 notify ,handler 裡的 task 卻沒有執行到,試了很久,找了好久才知道,必須 task 的狀態有改變的時候才會 notify ,而 ansible 的每個 task 的狀態並不是都會改變的,例如 ansible 發現檔案跟要變更的一致就不會改變狀態。

如果要強制改變,可以加上 changed_when: true ,這樣在執行完 task 時,永遠都把狀態設定為改變,也就會 notify 了。

- name: Install nginx configuration
  template: src=nginx.conf.j2 dest=/etc/nginx/sites-enabled/default
  notify:
    - reload nginx
  changed_when: true

Ansible mysql 相關模組所需的套件

使用 mysql_usermysql_db 這兩個模組時,Target 方必須要安裝幾個套件才能運作,否則會有錯誤

msg: the python mysqldb module is required

在 Ubuntu 裡要裝的是 python-mysqldb 、mysql-server  。python-mysqldb 是必要的,因為 python 的程式會需要用到這個模組;而 mysql-server 則要視你的 mysql server 所在機器而定,如果是在其他機器上,就可以不需要安裝。