2017-05-04 5 views
0

私はAnsible(バージョン2.2.1.0を実行しています)にはかなり新しく、これまでのところ基本的なディレクトリ構造に従っています。最近私はいくつかのタスクをhandlersエリアに移そうとしましたが、私はちょっと変わった動作をしています。可能なハンドラは発砲していませんか?

マイツリー構造は、次のようになります。

host_inventory 
host_vars 
site.yml 
roles 
    common 
    handlers 
     main.yml 
    meta 
     main.yml 
    tasks 
     main.yml 
    vars 
     main.yml 

は2つだけ、関連するファイルは、(私が思う)本当にあります。

役割/共通/タスク/ main.yml:

--- 
    - name: make test file 
    shell: "touch /home/hello" 
    notify: say goodbye 

と役割/共通/ハンドラ/ main.ymlで

タスク/ main.ymlのこのバージョンは、ハンドラを呼び出すん。

--- 
    - name: say goodbye 
    shell: "touch /home/goodbye" 

これは、ハンドラを呼び出すことはありません:

役割/共通/タスク/ main.yml

--- 
    - name: test for file 
    stat: 
     path: /home/hello 
    notify: say goodbye 

役割/共通/ハンドラ/ main.yml

--- 
    - name: say goodbye 
    shell: "echo something" 

statタスクが自分のハンドラを呼び出すされていない理由を私は理解できません。

誰かが洞察力を提供できますか?私は何かが明らかに欠けているように感じる。

答えて

1

タスクの状態がchangedの場合にのみハンドラに通知されます。
あなたの例ではshellタスクは常にchanged状態ですが、statタスクは常にok状態です。

詳細はdocumentationを参照してください。

+0

ありがとうございました。状態が変更されていなくても、タスクがハンドラを呼び出すように強制する方法はありますか? – prelic

+0

いいえ。しかし、 'changed_when:true'ステートメントを使って常にタスク状態を'変更 'にすることができます。 –

関連する問題