Ansible gather_facts ์ฑ๋ฅ ํฅ์
Ansible์์ default๋ก Node์ Fact ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค. Fact๋ Anisible Node์ OS, Resource, IP ๋ฑ ํธ์คํธ์ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ณ์๋ก ์ ์ฅํฉ๋๋ค. ์ด๋ฐํ Fact์ ์ ๋ณด๋ฅผ Provisioningํ๋ ๊ณผ์ ์์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด... ๋ ธ๋์ ์์ ๋น๋กํด์ ์ฑ๋ฅ์ด ์ ํ ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด.... ๋จ์ํ๊ฒ ๋ชจ๋ ๋ ธ๋์ ํ์ผ์ ํ๋ ์์ฑํ๋๋ฐ ๊ตณ์ด Node์ ์ ๋ณด๋ค์ ์์งํ ํ์๊ฐ ์์ต๋๋ค. 3๋์ ๋ ธ๋์๋ง Provisioningํ๋ค๋ฉด ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์๊ฒ ์ง๋ง... 100๋, 1000๋๊ฐ ๋์ด๊ฐ๋ ๋ ธ๋๋ค์ ๊ด๋ฆฌํ๋ค๋ฉด ์ฑ๋ฅ์ ๋ํ ์ฐจ์ด๋ฅผ ํ์ฐํ๊ฒ ๋๋ ์ ์์ ๊ฒ ์ ๋๋ค.
---
- hosts: all
# facts๋ฅผ ์์งํ์ง ์๋๋ค.
gather_facts: no
tasks:
- name: Create an empty file
file:
path: "/root/test.txt"
state: touch
- gather_facts ํ๋๋ฅผ no๋ก ์ค์ ํ์ฌ fact๋ฅผ ์์งํ์ง ์๊ฒ ํ๋ค.
Ansible Facts๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ?
์์ ๋ด์ฉ์ ์ธ์ฉํด๋ณด๋ฉด... Facts์ ์ ๋ณด๋ ๋ ธ๋์ ๊ธฐ๋ณธ ์ ๋ณด๋ค์ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ gather_facts ํ๋๋ฅผ yes๋ก ์ค์ ํ๊ณ ํด์ผํ๋ค. ์๋ฅผ๋ค์ด... ๊ฐ ์ด์์ฒด์ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ค์ ํด์ค์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ฑฐ๋... ๋ฆฌ์์ค ์ํ์ ๋ฐ๋ผ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ๋ ๋ฑ, ํธ์คํธ์ ์ํ์ ๋ฐ๋ผ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค. ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก when์ ์ฌ์ฉํด์ ์กฐ๊ฑด์ ๊ฑธ์ด ์ค๋๋ค.
Ansible Facts ํ์ธ
$ ansible all -m setup
- setup module์ ์ฌ์ฉํด์ Fact์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
์์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ ธ๋์ ๋ค์ํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
Memory ์ฌ์ ๊ณต๊ฐ์ ๋ฐ๋ฅธ Provisioning
---
- hosts: all
# facts๋ฅผ ์์งํ๋ค. default๊ฐ yes์ด๊ธฐ๋๋ฌธ์ ๋ช
์ํ์ง ์์๋ ๋๋ค.
gather_facts: yes
tasks:
- name: debug when node has sufficient memory
debug:
msg:
- "{{ ansible_memfree_mb }}"
- "{{ ansible_memory_mb }}"
when: "ansible_memfree_mb | int >= 2048"
- gather_facts ํ๋๋ฅผ yes๋ก ์ค์ ํ์ฌ fact์ ๋ณด๋ฅผ ์์งํ ์ ์๋๋ก ํ๋ค.
- when ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 2GB ์ด์์ธ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ ์ํ๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค.
์ฌ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 2GB ์ด์์ธ master01.centos.test ๋ ธ๋๋ง ์คํํ๊ณ ๋๋จธ์ง๋ skipํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋๊ธ