かべぎわブログ

技術的なことについてかけたらいいな…

AnsibleのGathering Factsを実行しないようにする

今回はansible-playbookを実行するときに毎回実行されるGathering Factsを実行しないように設定してみたいと思います。
(意外と実行に時間がかかってるようなきがするので)

そもそもGathering Factsってなにやってんの?

ターゲットノードのメタデータ(IPアドレスからCPUやディスクの情報)を取得してくれています。
ちなみにこの取得したデータのことをファクト変数といいます。

設定方法

設定する方法はかんたんです。
playbookに以下のように設定してあげるだけ

gather_facts: no

デフォルトではgather_facts: yesと設定されているのと同じですので明示的にnoと設定してあげます。

動作を見てみる

こんなかんじの超単純なplaybookを実行してみます。

gather_facts_no.yml

- hosts: localhost
  gather_facts: no

実行結果

Gathering Factsが実行されていないことがわかります。

$ ansible-playbook -i ansible_hosts gather_facts_no.yml

PLAY [localhost] *******************************************************************************************************

PLAY RECAP *************************************************************************************************************

補足: Gathering Factsの実行時間検証

gather_factsの実行ありなしをtime`コマンドで実行時間を比較してみる。
だいたいこんなかんじ。

gather_facts: yes

real 0m1.690s
user 0m1.312s
sys  0m0.076s

gather_facts: no

real 0m1.036s
user 0m0.960s
sys  0m0.056s

まあ微々たるものですね…

おわりに

確実にファクト変数をつかわないのであればgather_facts: noに設定したほうがいいんじゃないかなぁとは思います。

入門Ansible

入門Ansible