6.10. スキャンジョブテンプレート
Automation Controller3.2 以降、スキャンジョブはサポートされなくなりました。このシステム追跡機能は、ファクトを履歴データとして取得して保存する方法として使用されました。ファクトは、ファクトキャッシュを通じてコントローラーに保存されるようになりました。詳細は、ファクトキャッシュ を参照してください。
Automation Controller 3.2 より前のシステムで使用されるジョブテンプレートスキャンジョブは、通常のジョブテンプレートと同様に、run を入力するように変換されます。インベントリーや認証情報などの関連リソースを保持します。デフォルトでは、関連プロジェクトを持たないジョブテンプレートスキャンジョブには特別な Playbook が割り当てられます。独自のスキャン Playbook を使用してプロジェクトを指定することもできます。awx-facts-playbooks を指すプロジェクトが組織ごとに作成され、ジョブテンプレートが Playbook: https://github.com/ansible/tower-fact-modules/blob/master/scan_facts.yml に設定されます。
6.10.1. ファクトスキャン Playbook
スキャンジョブ Playbook scan_facts.yml
には、パッケージ、サービス、ファイルという 3 つの ファクトスキャンモジュール
の呼び出しと、Ansible の標準ファクト収集機能が含まれています。scan_facts.yml
Playbook ファイルは次のようになります。
- hosts: all vars: scan_use_checksum: false scan_use_recursive: false tasks: - scan_packages: - scan_services: - scan_files: paths: '{{ scan_file_paths }}' get_checksum: '{{ scan_use_checksum }}' recursive: '{{ scan_use_recursive }}' when: scan_file_paths is defined
scan_files
ファクトモジュールは、スキャンジョブテンプレートの extra_vars
で渡されるパラメーターを受け入れる唯一のモジュールです。
scan_file_paths
: /tmp/
scan_use_checksum
: true scan_use_recursive
: true
-
scan_file_paths
パラメーターには複数の設定がある場合があります (/tmp/
または/var/log
など)。 -
scan_use_checksum
およびscan_use_recursive
パラメーターを false に設定するか、省略することもできます。省略も、設定の誤りと同等です。
スキャンジョブテンプレートでは、become
を有効にし、become
が可能である 認証情報
を使用する必要があります。オプションリストから Privilege Escalation をチェックすることで、become
を有効にできます。
6.10.2. scan_facts.yml でサポートされるオペレーションシステム
ファクトキャッシュを使用して scan_facts.yml
Playbook を使用する場合は、次のサポート対象のオペレーティングシステムのいずれかを使用していることを確認してください。
- Red Hat Enterprise Linux 5、6、7、8、9
- Ubuntu 23.04 (Ubuntu は非推奨となり、今後のリリースで削除されます)
- OEL 6 および 7
- SLES 11 および 12
- Debian 6、7、8、9、10、11、12
- Fedora 22、23、24
- Amazon Linux 2023.1.20230912
これらのオペレーティングシステムの一部では、Python を実行するために、またはスキャンモジュールが依存する python-apt
などの Python パッケージにアクセスするために初期設定が必要です。
6.10.3. スキャン前の設定
以下は、スキャンジョブを実行できるように特定のディストリビューションを設定する Playbook の例です。
Bootstrap Ubuntu (16.04) --- - name: Get Ubuntu 16, and on ready hosts: all sudo: yes gather_facts: no tasks: - name: install python-simplejson raw: sudo apt-get -y update raw: sudo apt-get -y install python-simplejson raw: sudo apt-get install python-apt Bootstrap Fedora (23, 24) --- - name: Get Fedora ready hosts: all sudo: yes gather_facts: no tasks: - name: install python-simplejson raw: sudo dnf -y update raw: sudo dnf -y install python-simplejson raw: sudo dnf -y install rpm-python
6.10.4. カスタムファクトスキャン
カスタムファクトスキャンの Playbook は ファクトスキャン Playbook セクションの例に似ています。たとえば、カスタム scan_foo
Ansible fact モジュールのみを使用する Playbook は次のようになります。
scan_foo.py: def main(): module = AnsibleModule( argument_spec = dict()) foo = [ { "hello": "world" }, { "foo": "bar" } ] results = dict(ansible_facts=dict(foo=foo)) module.exit_json(**results) main()
カスタムファクトモジュールを使用するには、それがスキャンジョブテンプレートで使用される Ansible プロジェクトの /library/
サブディレクトリーに存在することを確認してください。このファクトスキャンモジュールは、ハードコードされたファクトのセットを返します。
[ { "hello": "world" }, { "foo": "bar" } ]
詳細は、Ansible ドキュメントの モジュールの開発 セクションを参照してください。
6.10.5. ファクトキャッシング
Automation Controller は、Ansible Fact Cache プラグインを通じてホストごとにファクトを保存および取得できます。この動作はジョブテンプレートごとに設定できます。ファクトキャッシングはデフォルトでオフになっていますが、こちらを有効にして、実行中のジョブに関連するインベントリーの全ホストに対するファクトリクエストに対応できます。これにより、ホストファクトのインベントリー全体にアクセスしながら、--limit
を指定してジョブテンプレートを使用できるようになります。プラグインによってホストごとに適用されるグローバルタイムアウト設定 (秒単位) を指定するには、ナビゲーションパネルから
ファクトキャッシュ (use_fact_cache=True
) を使用するジョブを起動すると、各ホストの ansible_facts
はすべてコントローラーによってジョブのインベントリーに保存されます。
Automation Controller に同梱されている Ansible Fact Cache プラグインは、ファクトキャッシュが有効なジョブ (use_fact_cache=True
) で有効になります。
ファクトキャッシュが有効になっているジョブ (use_fact_cache=True
) が実行されると、Automation Controller はインベントリー内のホストの全レコードを復元します。ホストごとに現在保存されているファクトよりも更新時刻が新しいレコードはデータベース内で更新されます。
新しいファクトと変更されたファクトは、Automation Controller のログ機能を通じて記録されます。具体的には、system_tracking namespace
またはロガーに対してです。ロギングペイロードには次のフィールドが含まれます。
-
host_name
-
inventory_id
-
ansible_facts
ansible facts
は、Automation Controller インベントリー (inventory_id
) に含まれる host_name
の全 Ansible ファクトのディクショナリーです。
ホスト名にスラッシュ (/) が含まれている場合、ファクトキャッシュはそのホストでは機能しません。100 台のホストを含むインベントリーがあり、1 台のホストの名前に / が含まれている場合、残りの 99 台のホストは引き続きファクトを収集します。
6.10.6. ファクトキャッシングの利点
ファクトキャッシュにより、ファクト収集の実行にかかる時間を節約できます。1000 個のホストとフォークに対して実行するジョブに Playbook がある場合、これらの全ホストからファクトを収集するのに 10 分費やすことができます。ただし、ジョブを定期的に実行する場合、最初の実行でこれらのファクトがキャッシュされ、次の実行でデータベースから取得されます。こうすることで、スマートインベントリーを含む大規模なインベントリーに対するジョブの実行時間が短縮されます。
ファクトキャッシュを適用するために ansible.cfg ファイルを変更しないでください。カスタムファクトキャッシュは、コントローラーのファクトキャッシュ機能と競合する可能性があります。必ず Automation Controller に同梱されているファクトキャッシュモジュールを使用してください。
ジョブテンプレートを作成または編集するときに Enable fact storage オプションをオンにすると、キャッシュされたファクトをジョブで使用できます。
ファクトを消去するには、Ansible clear_facts
メタタスク を実行します。以下は、Ansible clear_facts
メタタスクを使用する Playbook の例です。
- hosts: all gather_facts: false tasks: - name: Clear gathered facts from all currently targeted hosts meta: clear_facts
ファクトキャッシュの API エンドポイントは次の場所にあります。
http://<controller server name>/api/v2/hosts/x/ansible_facts