Ansible における Facts とは
Ansible によって管理対象機器から取得されるシステム変数を Facts といいます。
デフォルトで Ansible 実行時の最初のステップで管理対象機器から Facts 情報が取得され、その後の処理で Facts の情報を使用できます。
Facts として例えば以下のような情報があります。
- ディストリビューションの名前、メジャーバージョン
- ホスト名
- Python バージョン
- デバイス情報
- ユーザ情報
その他の情報については以下の公式ドキュメントを参照してください。
Using Variables — Ansible Documentation
Facts の例
■ 作業環境
- CentOS 8.0
- Python 3.7.7
- Ansible 2.9.6
■ Playbook 例
- hosts: all
tasks:
- name: facts test
debug:
msg: '{{ item }}'
with_items:
- 'ansible_distribution: {{ ansible_distribution }}'
- 'ansible_distribution_major_version: {{ ansible_distribution_major_version }}'
- 'ansible_hostname: {{ ansible_hostname }}'
- 'ansible_date_time.date: {{ ansible_date_time.date }}'
- 'ansible_python_version: {{ ansible_python_version }}'
- 'ansible_user_dir: {{ ansible_user_dir }}'
- {{ ansible_distribution }} → ディストリビューション名
- {{ ansible_distribution_major_version }} → ディストリビューションのメジャーバージョン
- {{ ansible_hostname }} → ホスト名
- {{ ansible_date_time.date }} → システム日付
- {{ ansible_python_version }} → システムの Python のバージョン
- {{ ansible_user_dir }} → 使用しているユーザのホームディレクトリ
■ 実行結果
PLAY [all] **********************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************
ok: [localhost]
TASK [facts test] ***************************************************************************************************
ok: [localhost] => (item=ansible_distribution: CentOS) => {
"msg": "ansible_distribution: CentOS"
}
ok: [localhost] => (item=ansible_distribution_major_version: 8) => {
"msg": "ansible_distribution_major_version: 8"
}
ok: [localhost] => (item=ansible_hostname: testSV2) => {
"msg": "ansible_hostname: testSV2"
}
ok: [localhost] => (item=ansible_date_time.date: 2020-04-24) => {
"msg": "ansible_date_time.date: 2020-04-24"
}
ok: [localhost] => (item=ansible_python_version: 3.6.8) => {
"msg": "ansible_python_version: 3.6.8"
}
ok: [localhost] => (item=ansible_user_dir: /home/testuser) => {
"msg": "ansible_user_dir: /home/testuser"
}
PLAY RECAP **********************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Facts を取得させたくない場合
Facts を取得する処理には多少時間を要するため、Facts を取得させたくない場合があります。
Facts を取得させたくない場合は、以下のように Playbook に 「gather_facts: no」 と記載します。
- hosts: all
gather_facts: no
tasks:
-...
※ gather_facts の設定値はデフォルトで yes となっています
―――――――――――――