ansible facts 란

ansible facts 는 remote host 에 대한 정보를 의미하며 배포판 종류, 버전, IP Address, file system 정보등을 포함합니다.


ansible 을 실행하면 자동으로 remote host 에 대한 정보를 수집하며 수집한 정보는 ansible_ 이라는 접두사를 붙여서 저장합니다.


다음 playbook 을 실행하면 원격 시스템에 대한 정보를 ansible_facts 변수에 저장한 후에 터미널에 출력합니다.

---

- name: gather facts
  hosts: localhost
  tasks:
  - name: Print all available facts
    ansible.builtin.debug:
      var: ansible_facts
YML
$ ansible-playbook gather_facts.yml

PLAY [gather facts] ************************************************************

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

TASK [Print all available facts] ***********************************************
ok: [localhost] => {
    "ansible_facts": {
        "all_ipv4_addresses": [
            p192.168.187.200"
        ],
        "all_ipv6_addresses": [
            "fe80::b76f:65c7:7205:dcc2"
        ],
        "ansible_local": {},
        "apparmor": {
            "status": "disabled"
        },
BASH

setup 모듈

ansible 은 playbook 실행시 자동으로 fact 를 수집하고 저장합니다.

만약 playbook 을 작성하지 않고 간단하게 fact 만 출력하려면 builtin 모듈인 setup 을 사용하면 됩니다.

$ ansible -m setup localhost
BASH


특정 fact 만 알고 싶을 경우 pipe 로 연결해서 grep 을 실행하면 됩니다.

$ ansible -m setup localhost |  grep distribution

 "ansible_distribution": "CentOS",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/redhat-release",
        "ansible_distribution_file_variety": "RedHat",
        "ansible_distribution_major_version": "8",
        "ansible_distribution_release": "Core",
        "ansible_distribution_version": "8.0",
BASH


같이 보기

Ref