私はスクリプト/コマンドの実行が同じAnsibleハンドラを1回のプレイブック実行で2回使用できますか?
を行われていることを示すために、ファイルを作成しようとしています私たちはスクリプト/コマンドを避ける必要があります知っているが、ここで私はできません
それを示すために、ファイルを作成することは、すでにこれは、後者のタスクではなく、元の作品
を実行されています!
同じハンドラが二度かタスク..
- set_fact: donefile=nodesource_setup
- name: Ensure node install script executed
shell: ~/tmp/nodesource_setup.sh >> ~/tmp/nodesource_setup.log
args:
creates: ~/tmp/{{ donefile }}.done # Cannot one line this
notify: Done
- set_fact: donefile=ensure-npm-does-not-use-unicode
- name: Ensure npm does not use unicode
command: npm config set unicode false
args:
creates: ~/tmp/{{ donefile }}.done
notify: Done
ハンドラを使用することができます場合、私は思ったんだけど
..
- name: Done
copy:
content: "done"
dest: ~/tmp/{{ donefile }}.done
force: no
- メタ..ある素晴らしいTHX flush_handlersは、私が望んでいたまさにでした。素晴らしい洞察私はハンドラが起動しないときに実行されるタスクの数を減らすので、通常のタスクよりも簡単な通知タスクのハンドラを好む。 – danday74
しかし、この場合、ハンドラは2回呼び出されているので、保存している唯一のものは、あなたのプレイブックコードでは、実際に使用されているハンドルラーを将来的に混乱させる4行です一度だけ "の方法です。 このプレイブックを*常に*管理する唯一の人は、これは大きな問題ではないでしょう。もしあなたがこれを運用チームに渡す(またはもっと退職してもよい)チャンスがあれば、私はあなたがハンドラとメタの回避策ではなく2つのタスクに固執することをお勧めします。 –