てくなべ

ネットワーク、自動化などの技術的なことを書いていきます。Ansible、StackStorm等

Ansible 2.5 から facts は ansible_facts.* という名前空間配下でも参照可能

はじめに

Ansible 2.5 から facts は ansible_facts.* という名前空間配下でも参照可能になりました。

  • ansilbe_distribution であれば
    • ansible_facts.distribution でも参照可能
  • ansilbe_nodename であれば
    • ansible_facts.nodename でも参照可能

そのため、ansible_facts を参照すると、配下の facts の一覧を取得できます。

サンプル Playbook

- hosts: webservers
  gather_facts: yes
  
  tasks:
    - name: facts
      debug:      
        msg: "{{ ansible_facts }}"   

実行結果

(ansible25) [vagrant@centos7 vagrant]$ ansible-playbook -i inventory junos_test.yml --tag=d

PLAY [webservers] ***************************************************

TASK [Gathering Facts] *******************************************************
ok: [172.16.0.1]

TASK [facts list] ************************************************************
ok: [172.16.0.1] => {
    "msg": {
        "all_ipv4_addresses": [
            "172.17.0.1",
            "172.16.0.9",
            "10.0.2.15"
        ],
        "all_ipv6_addresses": [
            "fe80::42:75ff:fe85:****",
            "fe80::a00:27ff:fe74:****",
            "fe80::5054:ff:feda:****"
        ],
        "ansible_local": {},
        "apparmor": {
            "status": "disabled"
        },
        "architecture": "x86_64",
        "bios_date": "12/01/2006",
        "bios_version": "VirtualBox",
    
(略)
        "userspace_bits": "64",
        "virtualization_role": "guest",
        "virtualization_type": "virtualbox"
    }
}

PLAY RECAP *****************************************************************
172.16.0.1                 : ok=2    changed=0    unreachable=0    failed=0

まとめ

既存の ansible_ というプレフィックよりも ansible_facts という名前空間で整理されているほうが、まとめて処理がしやすいので使いやすいと感じました。

  • 参考リンク

www.ansible.com