본문 바로가기

리눅스

Ansible Facts

728x90

Ansible Facts

Facts는 Ansible이 목표 호스트에서 수집하는 정보입니다.

플레이북 편집

vim gather_facts_playbook.yml
---
- name: Gather Facts
  hosts: all
  gather_facts: true  # 기본값이지만 명확성을 위해 여기에 지정합니다.

  tasks:
    - name: Display gathered facts
      debug:
        var: ansible_facts

이 플레이북은 모든 호스트에서 Facts를 수집하고, 수집된 Facts를 출력하는 역할을 합니다.

ansible_facts 변수에는 각 호스트에서 수집된 모든 Facts가 포함되어 있습니다.

 

Facts는 기본적으로 Ansible에 의해 수집되므로 별도로 설정하지 않아도 됩니다.

gather_facts: true는 플레이북에서 Facts 수집을 활성화하는 옵션입니다. 따라서 대부분의 플레이북은 이 옵션을 설정하지 않아도 됩니다.

플레이북 실행

ansible-playbook -i inventory/hosts.ini gather_facts_playbook.yml --limit centos7
PLAY [Gather Facts] ************************************************************************************************

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

TASK [Display gathered facts] **************************************************************************************
ok: [centos7] => {
    "ansible_facts": {
        "all_ipv4_addresses": [
            "192.168.10.62",
            "192.168.56.62"
        ],
...
        "virtualization_tech_host": [],
        "virtualization_type": "virtualbox"
    }
}

PLAY RECAP *********************************************************************************************************
centos7                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

ad-hoc 명령어

  • gather_facts
ansible -i inventory/hosts.ini centos7 -m gather_facts
centos7 | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.10.62",
            "192.168.56.62"
        ],
...
    "changed": false,
    "deprecations": [],
    "warnings": []
}
  • setup 모듈
ansible -i inventory/hosts.ini centos7 -m setup
centos7 | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.10.62",
            "192.168.56.62"
        ],
...
        "module_setup": true
    },
    "changed": false
}

gather_facts와 setup의 역할과 몇 가지 차이점

gather_facts

  • gather_facts는 플레이북 수행 시 Ansible이 자동으로 호스트에서 정보를 수집하도록 하는 옵션입니다.
  • 기본적으로 gather_facts가 활성화되어 있으면, 플레이북이 실행되기 전에 각 호스트에서 Ansible이 Facts를 수집합니다.
  • 수집된 정보는 ansible_facts라는 변수에 저장되어 플레이북에서 참조할 수 있습니다.

setup 모듈

  • setup 모듈은 플레이북 내에서 명시적으로 호스트의 정보를 수집하도록 하는 모듈입니다.
  • setup 모듈은 gather_facts와 별도로 사용될 수 있으며, 필요한 경우에 수동으로 호출하여 정보를 갱신할 수 있습니다.

따라서 기본적으로 gather_facts가 활성화되어 있으면 자동으로 Facts가 수집되며, 필요한 경우에는 명시적으로 setup 모듈을 사용하여 수동으로 수집할 수 있습니다. gather_facts가 비활성화된 경우에는 setup 모듈을 사용하여 정보를 수집해야 합니다.

 

참고URL

- Ansible Documentation : Ansible facts

- Ansible Documentation : Special Variables - Magic variables

 

728x90