zaki work log

作業ログやら生活ログやらなんやら

[Ansible] ansible.builtin.gather_factsモジュールでfactsを収集するタスクを作成する

ansible.builtin.gather_factsモジュールを使うと、リモートホストのfacts変数を収集するタスクを定義できる。
収集する項目のサブセット指定も可能。
このモジュールはplayの定義でgather_factsfalseにしていても、タスク実行のタイミングでfactsを収集してくれる。

---
- hosts: all
  gather_facts: false

  tasks:
  - ansible.builtin.gather_facts:
      gather_subset:
        - network

  - ansible.builtin.debug:
      msg: "{{ ansible_facts }}"

使いどころとしては、facts変数を参照するrole単体を作成する場合に、「playでgather_factsを有効にしといてな」という使い方を要求することなく、role内でfactsの収集と参照を独立して実装できる。

注意点として、playでfacts変数を収集する設定(gather_factstrueの状態)の場合でも、ansible.builtin.gather_factsモジュールを使うタスクでのfacts変数収集も動作するため、その場合の処理時間は長くなる。

docs.ansible.com