๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DevOps/IaC ์ž๋™ํ™”

[Ansible] gather_facts ์„ฑ๋Šฅํ–ฅ์ƒ ๋ฐฉ๋ฒ•

by ๐ŸŒปโ™š 2021. 5. 23.

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ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€