ansibleのasyncをつかったバックグラウンド実行
ansibleで何かしら実行し、応答がない場合はfailed扱いになって、さらに実行しているプロセス自体を切ってしまうので、 実行コマンドに時間がかかったり、バックグラウンド処理をしてもらいたいときには非同期asyncモジュールを使う
- hosts: all
tasks:
#対象のプロセスがすでに起動しているかどうかの確認
- name: check test_process.sh
shell: "ps ax | grep test_process.sh | grep -v grep"
register: result
ignore_errors: True
#test_process.shの起動
#pollを0にするとshellの終了を無視して非同期で実行してくれる。
- name: Starging test_process.sh
shell: /usr/local/bin/test_process.sh start
async: 15
poll: 0
when: result|failed
処理的にはまずpsで対象のプロセスが実行しているかしていないかを確認して、なかった場合のみ起動するようにする。