■ はじめに
Ansible には、Playbook 実行時に予めどのような変更がせれるかを、実際に変更を加えることなくチェックできる、check モード (Dry-run)という機能があります。
これまでは、通常実行時も check モード実行時も、実行ログ上は特に変わりはありませんでした。
Ansible 2.9 から、デフォルトのコールバックプラグインに、check モードで実行されたタスクにのログに印を付けられるようになりました。
この記事では、簡単な例をもとにして説明します。
■ 設定
ansible.cfg
と環境変数の、2通りの設定方法があります。
ansible.cfg
ansible.cfg
で設定する場合は、[defaults]
セクションに以下のように指定します。
[defaults] check_mode_markers = yes
環境変数
ansible.cfg
で設定する場合は、以下のように指定します。
export ANSIBLE_CHECK_MODE_MARKERS=yes
■ 実行例1: --check オプション付加時
ansible-playbook
コマンドに --check
オプションを付けて Playbook 全体をチェックモードで実行する場合です。
- Playbook
- hosts: all gather_facts: no tasks: - name: debug test 1 debug: msg: debug test 1 - name: debug test 2 debug: msg: debug test 2
- 実行
$ ansible-playbook -i localhost, check_test.yml --check DRY RUN ********************************************************************************* PLAY [all] [CHECK MODE] ***************************************************************** TASK [debug test 1] [CHECK MODE] ******************************************************** ok: [localhost] => { "msg": "debug test 1" } TASK [debug test 2] [CHECK MODE] ******************************************************** ok: [localhost] => { "msg": "debug test 2" } PLAY RECAP ****************************************************************************** localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
冒頭に DRY RUN
、各 Play、各タスクに CHECK MODE
と表示されました。
■ 実行例2: タスクに check_mode: yes
付加時
タスクに check_mode: yes
を付けて、特定のタスクだけチェックモードで実行する場合です。
- Playbook
- hosts: all gather_facts: no tasks: - name: debug test 1 debug: msg: debug test 1 - name: debug test 2 debug: msg: debug test 2 check_mode: yes # ポイント
- 実行
$ ansible-playbook -i localhost, check_test.yml PLAY [all] ****************************************************************************** TASK [debug test 1] ********************************************************************* ok: [localhost] => { "msg": "debug test 1" } TASK [debug test 2] [CHECK MODE] ******************************************************** ok: [localhost] => { "msg": "debug test 2" } PLAY RECAP ****************************************************************************** localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
check_mode: yes
を指定したタスクのみ CHECK MODE
と表示されました。
■ 参考: check_mode_markers
を有効にしなかった場合
通常はこのようなログになります。
$ ansible-playbook -i localhost, check_test.yml --check PLAY [all] ****************************************************************************** TASK [debug test 1] ********************************************************************* ok: [localhost] => { "msg": "debug test 1" } TASK [debug test 2] ********************************************************************* ok: [localhost] => { "msg": "debug test 2" } PLAY RECAP ****************************************************************************** localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
■ まとめ
デフォルトのコールバックプラグインに、check モードで実行されたタスクにのログに印を付ける設定のご紹介をしました。
Playbook 実行ログ上、check モードで実行したことを区別したいときには便利だと思います。