事実の収集のカスタマイズ
Ansibleの組み込みの事実収集機能は強力ですが、追加情報を収集したり、事実収集プロセスをカスタマイズする必要がある場合もあります。LabExは、Ansibleの事実収集機能を拡張してカスタマイズするためのいくつかの方法を提供しています。
カスタムファクトモジュール
Ansibleを使えば、管理対象のホストに関する追加情報を収集するために独自のファクトモジュールを作成できます。これらのカスタムファクトモジュールは、Ansibleでサポートされている任意の言語、たとえばPython、Bash、またはPowerShellで書くことができます。
Ubuntu 22.04システムにインストールされているパッケージに関する情報を収集するPythonで書かれたカスタムファクトモジュールの例を以下に示します。
#!/usr/bin/env python
from ansible.module_utils.basic import AnsibleModule
def main():
module = AnsibleModule(
argument_spec=dict(),
supports_check_mode=True
)
packages = []
with open('/var/lib/dpkg/status', 'r') as f:
for line in f:
if line.startswith('Package:'):
packages.append(line.split(':')[1].strip())
module.exit_json(changed=False, ansible_facts={'installed_packages': packages})
if __name__ == '__main__':
main()
このカスタムファクトモジュールを使用するには、Ansibleのプレイブックに含めることができます。
- hosts: all
gather_facts: false
tasks:
- name: Gather custom facts
ansible.builtin.setup:
gather_subset:
- custom
register: custom_facts
- name: Print custom facts
debug:
var: custom_facts.ansible_facts.installed_packages
これにより、インストールされているパッケージのリストが収集され、Ansibleの事実として利用できるようになります。
事実のキャッシュ
Ansibleは事実のキャッシュをサポートしており、事実を収集するために必要な時間を短縮することで、プレイブックのパフォーマンスを向上させることができます。Ansibleの設定ファイルまたはプレイブックでfact_caching
オプションを設定することで、事実のキャッシュを有効にできます。
memory
事実キャッシュプラグインを使用して事実のキャッシュを有効にする方法の例を以下に示します。
- hosts: all
gather_facts: true
strategy: free
vars:
ansible_facts_cache_plugin: memory
ansible_facts_cache_timeout: 86400 ## 1日
これにより、収集された事実が24時間メモリにキャッシュされ、その後の実行時に事実を収集するための時間が短縮されます。
カスタムファクトモジュールと事実のキャッシュを活用することで、Ansibleの事実収集機能を拡張して、特定の要件により適合させ、自動化ワークフローのパフォーマンスを向上させることができます。