私は、単一の事実を収集するだけの役割に取り組んでいます。
パフォーマンスは懸念事項であり、事実の収集には時間がかかることを知っています。
プレイブック内でgather_facts
をフィルタリングする方法を探しています。これにより、必要なファクトのみを収集できます。
これは、セットアップコアモジュールを使用して可能です。
ansible -m setup -a 'filter=ansible_hostname' my_Host
10.200.0.127 | success >> {
"ansible_facts": {
"ansible_hostname": "my_Host"
},
"changed": false
}
プレイブック内でこの機能を使用することは可能ですか?このようなもの?
- hosts: all
Sudo: yes
gather_facts: True
filter: "filter=ansible_*"
PS:上記のコードは構文例外をスローします。
EDIT 1:誰かがホスト名を取得する必要がある場合、別の有用な変数 inventory_hostname もあります。
はい、それは可能ですが、事実を収集するデフォルトの動作ではできません。 gather_facts
をtrue
に設定すると、最初の再生タスクとして setup module が呼び出されます。この方法では、setup
モジュール呼び出しをパラメーター化する方法はありません。
ただし、デフォルトの動作を無効にして、フィルターパラメーターを使用してセットアップを自分で呼び出すことができます。
- hosts: all
Sudo: yes
gather_facts: False
tasks:
- setup:
filter: ansible_*
ロールで作業しており、ロールでこのセットアップコールを使用したくない場合があるため、pre_tasksを使用できます。
- hosts: all
Sudo: yes
gather_facts: False
pre_tasks:
- setup:
filter: ansible_*
roles:
- your_role_here
プレイブックの上部にあるAnsibleの方法(追加の方法):
----
- hosts: web
gather_facts: True
gather_subset:
- network
- virtual
次を使用して変数をデバッグします。
- name: Print some debug information
vars:
msg: |
Module Variables ("vars"):
--------------------------------
{{ vars | to_Nice_json }}
Environment Variables ("environment"):
--------------------------------
{{ environment | to_Nice_json }}
GROUP NAMES Variables ("group_names"):
--------------------------------
{{ group_names | to_Nice_json }}
GROUPS Variables ("groups"):
--------------------------------
{{ groups | to_Nice_json }}
Host Variables ("hostvars"):
--------------------------------
{{ hostvars | to_Nice_json }}
debug:
msg: "{{ msg.split('\n') }}"
tags: debug_info
この質問に答えた後、 Ansible 2.1はセットアップモジュールにgather_subset
オプション を追加したので、ドキュメントで説明されている!facter,!ohai,network
構文を使用できるようになりました正規表現フィルターより:
- hosts: all
Sudo: yes
gather_facts: False
pre_tasks:
- setup:
gather_subset: !facter,!ohai,network
roles:
- your_role_here
必要なのが各ホストのホスト名だけである場合は、次のようにするだけで必要なことを実行できます。
- hosts: all
gather_facts: false
tasks:
- name: Get hostname
command: /bin/hostname
register: my_hostname
- debug: var=my_hostname
興味のある他の事実がある場合は、適切なコマンドを指定し、登録された変数を介してその事実を参照します。