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๊ฐ ์ค์น๋์ด ์์ง ์์์ ํด๋น ํ์คํฌ๋ฅผ ์คํตํ๊ฒ๋ฉ๋๋ค.
๋๊ธ