Ansible 101
Ansible์ ๋ํด ์์๋ณด์์
Reference: brownbears.tistory.com
What is Ansible?
**IaC(Infrastructure as Code)**๋ฅผ ์งํฅํ๋ ์๋ํ ๊ด๋ฆฌ ๋๊ตฌ
Open-source ๊ธฐ๋ฐ์ผ๋ก ์ ์๋์๋ค
Ansible์ ๊ตฌ๋ํ๋ module ๋ฐ library๋ Python ๊ธฐ๋ฐ์ด๋ค
YAML format์ ๊ธฐ๋ฐ์ผ๋ก playbook์ ์คํ์์ผ์
์ํ๋ ์๋ํ๋ฅผ ๊ตฌํํ๊ฑฐ๋,
Ad hoc mode๋ก module์ ์คํ์์ผ ์ํ๋ฅผ ์กฐํํด ๋ณผ ์ ์๋ฐ
SSH๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Target Host์ agentless ๋ฐฉ์์ผ๋ก ์๋ํ๋ฅผ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌํ๋ค
Advantages of Ansible
1. Agentless
์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ IaC ๋๊ตฌ๋ค์ด ์๋ํ ๋์ ์ฅ๋น๋ค์ agent๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑํ๋ pull ๋ฐฉ์์ธ ๊ฒ์ ๋ฐํด,
Ansible์ ์๋ํ ๋์ ์ฅ๋น๋ค์ agentless ๊ธฐ๋ฐ์ push ๋์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค
๋์ ์ฅ๋น์ agent๋ฅผ ์ค์นํ์ง ์๊ธฐ ๋๋ฌธ์, Data center ๋๋ IT Infra ๋ด๋น์๋ค์ด ์๋์ ์ผ๋ก ๊ฑฐ๋ถ๊ฐ์ด ๋ํ๋ค
SSH ๊ธฐ๋ฐ์ผ๋ก ๋๋ถ๋ถ ๋์ํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์ ์ ์ ๊ทผ์ฑ๋ ์ฉ์ดํ๋ค
2. ์ ๊ทผ ์ฉ์ด์ฑ
Ansible์ Python ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋์์ง๋ง, Python์ ๋ํ ์ง์์ด ์์ด๋ ์ฌ์ฉํ ์ ์์๋งํผ ์ง์ ์ฅ๋ฒฝ์ด ๋ฎ์ ํธ์ด๋ค
3. ๋ค์ํ Module ์ง์
Version์ด ์ง์์ ์ผ๋ก patch๋๊ณ , ๋์ ์ฌ์ฉ์์ธต์ ํ๋ณดํ๋ฉด์ ๋ง์ module์ ์ง์ํ๊ณ ์๋ค
๋ค์ํ cloud infra, ๊ฐ์ํ, ์๋ฒ OS, Platform ๋ฐ Network ์ฅ๋น์ Storage๊น์ง ๋งค์ฐ ํญ๋์ module๋ค์ version upgrade๋ง๋ค ํ์ฅํ๊ณ ์๋ฐ
4. ๋ฉฑ๋ฑ์ฑ (Idempotence)
Ansible์์๋ YAML script file๋ก ์์ฑ๋ Playbook์ ์ฌ๋ฌ ์ฐจ๋ก ๋ฐ๋ณต ์คํํด๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ์์ผ,
๋ฉฑ๋ฑ์ฑ
์ ์ผ๊ด๋๊ฒ ์ํํ ์ ์๋ค์ฌ๋ฌ๋ฒ ์ ์ฉํด๋ ๊ฒฐ๊ณผ๋ ๋ฐ๋์ง ์๋๋ค
๋ฐ๋๋ ๊ฒ์ด ์์ผ๋ฉด ๋น์ฐํ ๋ฐฐํฌ๋์ด๋ ๋ฐ๋์ง ์๋๋ค
๋ฐ๋๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๊ทธ ๋ถ๋ถ๋ง ๋ฐ์๋๋ค
Shell, command, file module์ ๋ณด์ฅ๋์ง ์๋๋ค
Ansible์ ์คํํ๋ฉด Task๋ฅผ ์ํํ๊ธฐ ์ ์ module์ ์ํ๋ฅผ ๋จผ์ ์ฒดํฌํ๊ณ ,
Task๋ฅผ ์ํ ํ ๋๋ ์ถ๊ฐ๋ ๊ฒ๊ณผ ๋ณํ๋ ๋ถ๋ถ์ ๋ํ ์ ๋ณด๋ค์ ์ ๊ณตํ์ฌ ์ผ๊ด์ฑ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ ์ ์๋ค
Ansible Architecture
Control Node
์ค์ ์ ์ด node์ด๋ฉฐ, Ansible์ด ์ค์น๋๋ node
Windows๋ ์ค์น๊ฐ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก
winrm
์ ์ฌ์ฉํด์ผ ํ๋ค
Managed Node
Ansible Control Node์ ์ํด ๊ด๋ฆฌ๋๋ ์๋ฒ
hosts ์ ๋ฑ๋ก๋ ๋์
Ansible Control Node์์ SSH๋ฅผ ํตํด Managed Node์ ๋ฐฐํฌํ๋ค
Inventory
Managed Node ๊ฐ ๋ฑ๋ก๋์ด ์๋ ๋ชฉ๋ก
์์ ํ node ํน์ server๋ค์ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ผ
Remote server์ ๋ํ meta data๋ฅผ ๊ธฐ์ ํ๋ ํ์ผ
๊ธฐ๋ณธ ํ์ผ์
/etc/ansible/hosts
๋ฅผ ์ฝ๊ฒ ํ๊ฑฐ๋, ๋ฐ๋ก Inventory ํ์ผ์ ๋ง๋ค๊ณ option์ ์ฃผ์ด ๋์ํ๊ฒ ํ ์ ์๋ค๋ง์ฝ ๊ณ ์ IP๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , hosts ํ์ผ ์์ ๋ค์ด๊ฐ ์์ง ์๋ server๊ฐ ์๋ค๋ฉด ์ค์ ํ์ผ์ ๋ง๋ค ์ ์๊ณ , ํ ์คํธ ํ๊ฒฝ์ ๋ง๋ค ๋ ์ ์ฉํ๋ค
Modules
Ansible์์ ์คํ๋๋ฉด์ ์์ ํ๋ ํ๋ํ๋์ ๋จ์
๋ค์๊ณผ ๊ฐ์ ์์ ์ ๊ฐ๋จํ ์ํํ ์ ์๊ฒ ๋์์ค
Package, service ์ค์น
File์ ๋ํ ๊ถํ ์ค์
Database ์์
Cloud ์์
Network ์์
Tasks
Module์ ์งํฉ
์์ ๋จ์
Playbooks
๊ณํ๋ ์์ ์ ์์๋๋ก ์คํํ๊ธฐ ์ํด ์์ฑ๋๋ YAML file
Last updated
Was this helpful?