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で対象のプロセスが実行しているかしていないかを確認して、なかった場合のみ起動するようにする。

Asynchronous Actions and Polling

connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

Jp, Tokyo https://connvoi.com