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

[Ansible] ํŒจํ‚ค์ง€ ์ •๋ณด ์ด์šฉํ•˜๊ธฐ Package_facts ์‚ฌ์šฉ

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

 

Package Facts

Ansible์—์„œ๋Š” ๋…ธ๋“œ์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” Fact๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. gather_facts ํ•„๋“œ์˜ ๊ฐ’์„ no๋กœ ์„ค์ •ํ•ด์„œ ํ•ด๋‹น ์ •๋ณด๊ฐ€ ํ•„์š”์—†์„ ๋•Œ, ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ฃ . package์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” fact๋„ ansible์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Ansible์€ ์—ฌ๋Ÿฌ ์šฉ๋„๋กœ ์‚ฌ์šฉ์ด๋˜๋Š”๋ฐ...  ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์šฉ๋„๋Š” ํŒจ์น˜๋ฅผ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ package์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” package fact๋ฅผ ํŒจ์น˜ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Package Facts๋ฅผ ์ด์šฉํ•ด์„œ ํŒจํ‚ค์ง€๋“ค์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์„œ๋น„์Šค์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ๋ชจ๋‘ ํŒจํ‚ค์ง€ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๋˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๋„์šฐ๋Š” ์„œ๋ฒ„๊ฐ€ 10๋Œ€๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋ชจ๋“  ์„œ๋ฒ„์— ๋ชจ๋‘ ๋„์›Œ์ ธ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ... ์–ด๋–ค ์„œ๋น„์Šค๋Š” 1,2,3๋ฒˆ์— ์˜ฌ๋ผ๊ฐ€์ ธ ์žˆ๊ณ ... ์–ด๋–ค ์„œ๋น„์Šค 3,4,5์—๋งŒ ๋„์›Œ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ansible inventory๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋น„์Šค์— ๋”ฐ๋ผ ๋ชจ๋‘ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ... ์„ค๊ณ„์— ๋”ฐ๋ผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ host๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฐ ๊ฒฝ์šฐ... ansible์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ... ํ•ญ์ƒ 10๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ํ™•์ธํ•ด ์„ฑ๋Šฅ์ƒ ๋ฌธ์ œ๊ฐ€ ๋ ์ˆ˜๋„ ์žˆ๊ณ  ํŒจํ‚ค์ง€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ๋“ค ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด package์˜ fact๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ์„œ๋ฒ„์— ์„ค์น˜ ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ํƒœ์Šคํฌ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

---
# ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.
- hosts: apps
  gather_facts: no
  tasks:
    - name: packages
      package_facts:
        manager: "auto"

# ์„ ํ–‰ํ•ด์„œ ์‹คํ–‰๋˜์–ด์•ผํ•  ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
# ...
# ...

# nginx ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฟŒ๋ ค์ค€๋‹ค.
- hosts: apps
  gather_facts: no
  tasks:
    - name: show updates
      debug:
        msg: "nginx updates needed!"
      when: "'nginx' in ansible_facts.packages"
  • when ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ํƒœ์Šคํฌ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค.

 

node02์˜ ๊ฒฝ์šฐ nginx๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ ํ•ด๋‹น ํƒœ์Šคํฌ๋ฅผ ์Šคํ‚ตํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€