Ansible:Factsについて(Ansible 2.9.6)

インフラサーバ

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 となっています

―――――――――――――

タイトルとURLをコピーしました