20.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 に設定されます。
20.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 を有効にできます。
20.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 パッケージにアクセスするために初期設定が必要です。
20.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
20.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 ドキュメントの モジュールの開発 セクションを参照してください。
20.10.5. ファクトキャッシング リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller は、Ansible Fact Cache プラグインを通じてホストごとにファクトを保存および取得できます。この動作はジョブテンプレートごとに設定できます。ファクトキャッシングはデフォルトでオフになっていますが、こちらを有効にして、実行中のジョブに関連するインベントリーの全ホストに対するファクトリクエストに対応できます。これにより、ホストファクトのインベントリー全体にアクセスしながら、--limit を指定してジョブテンプレートを使用できるようになります。プラグインで強制的にホストごとにグローバルタイムアウトの設定 (秒単位) を指定するには、 に移動して、Jobs オプションで Job settings を選択します。
ファクトキャッシュ (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 台のホストは引き続きファクトを収集します。
20.10.6. ファクトキャッシングの利点 リンクのコピーリンクがクリップボードにコピーされました!
ファクトキャッシュにより、ファクト収集の実行にかかる時間を節約できます。1000 個のホストとフォークに対して実行するジョブに Playbook がある場合、これらの全ホストからファクトを収集するのに 10 分費やすことができます。ただし、ジョブを定期的に実行する場合、最初の実行でこれらのファクトがキャッシュされ、次の実行でデータベースから取得されます。こうすることで、スマートインベントリーを含む大規模なインベントリーに対するジョブの実行時間が短縮されます。
ファクトキャッシュの適用に ansible.cfg ファイルを変更しないでください。カスタムファクトキャッシュは、コントローラーのファクトキャッシュ機能と競合する可能性があります。Automation controller に付属のファクトキャッシュモジュールを使用する必要があります。
キャッシュされたファクトのジョブでの使用は、ジョブテンプレートウィンドウの Options フィールドでこれを有効にして選択できます。
ファクトを消去するには、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