はじめに
gather_facts
のデフォルトは true
です。つまり、各種システム情報はデフォルトで収集されます。
実際のところは、お決まりのように gather_facts: false
を指定して無効にするケースのほうが多いのではないでしょうか。
デフォルトの挙動は DEFAULT_GATHERING
という設定項目で変更できます。
デフォルトを無効にして挙動を試してみます。
パターン1: gathering=explicit
、gather_facts 指定なし
ansible.cfg
に以下の設定を追加します。
[defaults] gathering=explicit
gathering
が、設定項目 DEFAULT_GATHERING
を ansible.cfg
で指定するときのキー名です。環境変数の場合は ANSIBLE_GATHERING
。
デフォルトは implicit
で、gather_facts: false
しない限り暗黙的に収集します。
上記で指定した explicit
は implicit
の逆です。gather_facts: true
しない限り収集しません。
Playbook は以下。gather_facts
は指定しませんが、先の設定により収集しない動作を期待します。
--- - hosts: rt01 tasks: - name: debug: msg: hello
実行。ファクトの収集はされず、GATHERING_FACTS
もログに表示されません。ok=1
です。
$ ansible-playbook -i ../inventory.ini collections.yml PLAY [rt01] ***************************************************************************************** TASK [debug] **************************************************************************************** ok: [rt01] => { "msg": "hello" } PLAY RECAP ****************************************************************************************** rt01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
パターン2: gathering=explicit
、gather_facts: true
ansible.cfg
は
[defaults] gathering=explicit
のままにして、Playbook 側で gather_facts: true
を指定します。
--- - hosts: rt01 gather_facts: true # 明示的に true 指定 tasks: - name: debug: msg: hello
実行。ファクト収集がされ、Gathering Facts
がログに表示されました。ok=2
です。
$ ansible-playbook -i ../inventory.ini collections.yml PLAY [rt01] *************************************************************************************************** TASK [Gathering Facts] **************************************************************************************** TASK [debug] ************************************************************************************************** ok: [rt01] => { "msg": "hello" } PLAY RECAP **************************************************************************************************** rt01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
おわりに
都度都度 gather_facts: false
を指定するのがつらいときはデフォルトを変更してしまうのも手かもしれません。ただ、初見だと不思議におもられる可能性があるため少し注意です。