Fact (팩트 변수) 란?
관리하는 노드의 정보를 가지고 있는 변수이다. 이 정보에는 운영체제, 로컬 변수, IP 주소, NIC 등의 정보가 포함된다. fact 변수는 setup 모듈을 이용해서 정보를 확인할 수 있다. Adhoc 과 플레이북을 통해 setup 모듈을 실행할 수 있다.
모든 노드들에 대한 팩트변수 내용 확인하기
ansible all -m setup
팩트 변수 이름 참조하기
setup 모듈을 이용해서 ansible_ 접두사가 붙은 지정된 변수 이름으로 참조하면 원하는 팩트변수의 정보를 얻을 수 있다.
Adhoc 명령어로 팩트 변수 참조하는 예시
$ ansible ansi-node1 -m setup -a "filter=ansible_distribution”
-m 옵션으로 모듈을 지정하고, -a 옵션으로 argument를 지정한다. filter= 뒤에 참조하고자 하는 변수를 쓴다. (참고로 ansible_distribution 이란, 배포버전 정보를 담고 있는 변수이다. )
Playbook 으로 팩트 변수 사용하기
- hosts: ansi-node1
tasks:
- debug:
msg: "{{ ansible_facts }}"
팩트 변수 비활성화 하기
- hosts: ansi-node1
gather_facts: no
tasks:
- debug:
msg: "{{ ansible_facts }}"
gather_facts 라는 필드에 false/False/no/0 값을 넣으면 팩트변수에 의한 정보를 수집하지 않는다. 따라서 위의 플레이북을 실행하면, fact 변수가 비활성화 되어서 ansible_facts 라는 변수에는 아무런 값도 담기지 않게 된다.
다시 팩트 변수를 활성화 하고 싶다면 setup 필드를 추가해주면 된다.
- hosts: ansi-node1
gather_facts: no # fact 변수 비활성화
tasks:
- debug:
msg: "{{ ansible_facts }}"
- setup: # fact 변수 활성화
- debug:
msg: "{{ ansible_facts }}"
팩트 변수로 local variable 참조하기
/etc/ansible/facts.d/ 디렉토리에 .fact 확장자로 끝나는 파일을 만들고, 파일 내에 사용할 local variable를 작성한다
- hosts: ansi-node2
tasks:
- file:
dest: "/etc/ansible/facts.d/"
state: "directory"
recurse: 1
- copy:
content: "[test2_section] \ntest3_var1=100\ntest3_var2=200\n"
dest: "/etc/ansible/facts.d/local.fact"
플레이북에서 참조하여 사용할 수 있다.
- hosts: ansi-node2
gather_facts: yes
tasks:
- debug:
msg: "{{ ansible_local }}"
ansible-playbook 을 실행하면 ansible_local 이 잘 찍히는 것을 확인할 수 있다.
팩트 변수 종류
NIC 인터페이스
{{ ansible_interfaces }}
host이름
다음의 방법 모두 호스트 이름을 참조하는 변수이다.
- {{ ansible_hostname }}
- {{ ansible_facts.hostname }}
- {{ ansible_facts[’hostname’] }}
IPv4 주소
{{ ansible_all_ipv4_addresses }}
'Cloud Engineering > Ansible' 카테고리의 다른 글
[Ansible] 조건문 사용하기 - 문자열/버전/팩트변수/경로/파일/마운트 검사하기 (0) | 2023.03.06 |
---|---|
[Ansible] 반복문 (loop문) 사용하기 (0) | 2023.03.02 |
[Ansible] Playbook 변수 사용하기 / vars_prompt / filter (필터) / lookup (조회) (0) | 2023.02.28 |
[Ansible] Playbook (플레이북) 이란? (0) | 2023.02.28 |
[Ansible] Ansible 설정 파일 ansible.cfg (0) | 2023.02.27 |