Open3

Ansible Playbook 覚書

えんぶんえんぶん

エラーハンドリング

https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_error_handling.html

  • ignore_errors: true つけるとエラーを無視
  • playの終わりにhandlerが呼び出されるが、あるTaskでhandlerに通知したとて、その後に処理されるTaskが失敗するとhandler処理は呼び出されない
    • CLIオプションに--force-handlersをつける、 force_handlers: Trueをplayにつける、force_handlers = True をansible.cfgに記述する、などすると強制的にhandlerを呼び出す
  • registerでタスクのレスポンスを変数に入れれるので、後段の処理やfailed_whenなどで使用できる
    • register: resultでresultにレスポンスを保存
    • result.rc -> exit-status: 0かそれ以外などでハンドリングできる
    • result.stderr, result.stdout -> stderr, stdoutの出力を見てハンドリングできる
  • failed_whenをtaskに設定するとタスク失敗の定義を上書きできる
    • or で条件を接続できる
      register: diff_cmd
      failed_when: diff_cmd.rc == 0 or diff_cmd.rc >= 2
      
    • 配列にするとand
      register: result
      failed_when:
          - result.rc == 0
          - '"No such" not in result.stdout'
      
    • 1行が長くなる場合はYAMLのmulti-line構文使う
      register: ret
      failed_when: >
          ("No such file or directory" in ret.stdout) or
          (ret.stderr != '') or
          (ret.rc == 10)
      
えんぶんえんぶん

ログの量増やす

-vオプションでより詳細なログを出力できる。-vv,-vvvなどvを増やすほどより詳細なログが出る

ansible-playbook -vv playbook.yaml