1) Ansible ๊ฐ์
(1) IaC (InfraStructure as a Code)
- “ํ๋ก๊ทธ๋๋ฐํ ์ธํ๋ผ”๋ผ๊ณ ๋ ํ๋ IaC๋ ์ธํ๋ผ ๊ตฌ์ฑ์ ๋ง์น ์ํํธ์จ์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ฒ๋ผ ํ๋ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๊ฐ๋ฆฌํจ๋ค.
- IT ์ธํ๋ผ(์๋ฒ์ ๋คํธ์ํฌ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋ค์จ์ด๋ถํฐ ์ ํ๋ฆฌ์ผ์ด์ , ์ถ๊ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด์ ๋ฐฐํฌ ๋ฐ ์ธ๋ถ ์๋น์ค์ ๋ชจ๋ํฐ๋ง๋ฑ์ ์ฐ๊ฒฐ๊น์ง๋ฅผ ํฌํจํ์ฌ ์์คํ ๊ณผ ์๋น์ค๋ฅผ ์ด์ํ๊ธฐ ์ํ ๋ชจ๋ ํ๊ฒฝ ์์๋ฑ์ “์๋์ผ๋ก” ์คํํ ์ ์๋๋ก ์ฝ๋๋ก ๊ธฐ์ ํ๋ ๊ฒ์ด๋ค.
(1-1) IaC์ ์ฅ์
- ๊ฐ์ ์์คํ ์ ๋ํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ ํ๋์จ์ด๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํ๊ณ ์ ๋ฐ์ดํธ ํ ํ์๊ฐ ์๋ค.
- ์ด๋ ์ธํ๋ผ์ “์ ์ฐ์ฑ”์ผ๋ก ์ฆ, ๋ฐ๋ณต์ฑ๊ณผ ํ์ฅ์ฑ์ ๋ถ์ฌํ๊ฒ ๋๋ค
→ ex. ์ด์์ 1๋ช ์ด ๋์ผํ ์ฝ๋๋ก 1๋ ๋๋ 1,000๋์ ์์คํ ์ ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌ
- ์์ ์๊ฐ์์์ ๋ ธ๋ ์๊ฐ์ ๊ฐ์์ํค๋ฉฐ, ํจ์จํ์ ์ํ ๋น์ฉ์ ๊ฐ ํจ๊ณผ๋ฅผ ๊ฑฐ๋ ์ ์๋ค.
- ์ฝ๋ํ์ ์ํ ๊ณ ๋์ ํ์ง ๋ณด์ฆ
→ ์ด๋ฌํ ์ธํ๋ผ ์ค์น์ ์๋ํ์ ๋ฐ๋ฅธ ์ง์ ์ ์ธ ์ด์ ์ ๋งค์ฐ ํฌ๊ณ , ์ด์ ๊ด๋ จ๋ ์ค์ํ ํจ๋ฌ๋ค์ ์ค์ ํ๋๊ฐ ๋ฐ๋ก Devops!!
(1-2) IaC (InfraStructure as a Code)์ Devops์ ๊ด๊ณ
- IaC๋ผ๋ ๊ฐ๋ ์ Devops๊ฐ ๋ถ์ํ๊ฒ ๋ ํ ๋๊ฐ ๋์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ํ ์ฝ๋์ ์ธํ๋ผ ๊ตฌ์ฑ์ ์ํ ์ฝ๋ ์ฌ์ด์ ๊ฒฝ๊ณ๊ฐ ํ๋ฌผ์ด์ง์ ๋ฐ๋ผ ๊ฐ๋ฐ์์ ์ด์ ๋ด๋น์์ ๊ณต๋ ์ ๋ฌด๊ฐ ๋์ด๋๊ฒ ๋์๋ค.
[์ฐธ๊ณ ] IaC ๋๊ตฌ ๋ชจ์
(2) Devops
- Devops๋ Development (๊ฐ๋ฐ)๊ณผ Operation (์ด์)์ ํฉ์ฑ์ด๋ก, ๊ธฐ์กด์ ๊ฐ๋ฐ ์ ๋ฌด์ ๊ด๋ฆฌ ์ ๋ฌด๋ก ๋๋์ด์ง ๋ ์ญํ ์ฌ์ด์ ์ปค๋ฎค๋์ผ์ด์ , ํ์ , ํตํฉ์ ๊ฐ์กฐํ๋ ๊ฐ๋ ์ด๋ค.
- IaC๋ ์์์๋ ๋งํ๋ฏ์ด, ์ธํ๋ผ์ ์ํ๋ฅผ ์ฝ๋์ ๊ธฐ์ ํด ์๋์ผ๋ก ์ค์นํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๊ณ , ์ํํธ์จ์ด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ ์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๊ทธ๋๋ก ์ธํ๋ผ์๋ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
- ์ค๋๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ดํด ์ค์ํ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ์ ์์ผ์ด ์กด์ฌํ๋๋ฐ, IaC๋ฅผ ์ ์ ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ์์ผ์ ํต์ฌ ๊ธฐ์ ์ ์ธํ๋ผ ์ด์ฉ์ ์ ์ฉํ ์ ์๋ค.
→ ๋ฐ๋ธ์ต์ค ๋งฅ๋ฝ์์ ์๊ฐํ๋ฉด ์ ์ผ ์ค์ํ ๊ฒ์ CI์ ์ํ ์ฐ๊ฒฐ์ด๋ฉฐ, IaC๋ก ์ธํ๋ผ๋ฅผ ์๋ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์์ ํ ์คํธ, ์ธํ๋ผ ์ค์น๊น์ง ์์คํ ๋ฆด๋ฆฌ์ฆ์ ํ์ํ ์ ๊ณผ์ ์ ์๋ํํ๊ณ ํตํฉํ ์ ์๋ค.
(2-1) ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ(Git ๋ฑ)์ ์ํ ์ ์ฐจ/์ค์ ์ ์ ์ ํ ๊ด๋ฆฌ
(2-2) ์๋ํ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ํ ์คํธ
- ์ฝ๋ ๋ ๋ฒจ์์์ ๋ถ์์ ์ํ ์ ์ ํ ์คํธ
- Ansible์ ์ํ ํ๊ฒฝ ํ ์คํธ
- Serverspec๊ณผ ๊ฐ์ ๋จธ์ ์ํ๋ฅผ ์ฒดํฌํ๋ ๋๊ตฌ์ ์ํ ํ๊ฒฝ ํ ์คํธ
(2-3) ๊ฐ์ข ๋๊ตฌ, ์๋น์ค์์ ์ฐ๊ฒฐ์ ์ํ CI (Contiinuous Integration)
- Genkins์์ ๋น๋๋ฅผ ์๋ฃํ๋ฉด ์๋์ผ๋ก Ansible์ ๊ธฐ๋ํ๊ณ ์ค์ ํ๊ฒฝ์ ๋ฐ์
- Github์ ์ฐ๊ณํ์ฌ ์ฝ๋๋ฅผ ๋ฐ์ํ๋ฉด ์ฆ์ ๋ฐฐํฌ๋ฅผ ์คํ
(3) Ansible
(3-1) ๊ฐ์
- Ansible์ IaC๋ฅผ ์งํฅํ๋ ์๋ํ ๊ด๋ฆฌ ๋๊ตฌ๋ก ์คํ ์์ค ๊ธฐ๋ฐ์ผ๋ก ์ ์๋์๋ค
- Ansible์ ๊ตฌ๋ํ๋ ๋ชจ๋ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Python์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, Yaml ํฌ๋งท์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ด๋ถ์ ์คํ์์ผ์ ์ํ๋ ์๋ํ๋ฅผ ๊ตฌํํ๊ฑฐ๋ Ad Hoc ๋ชจ๋๋ก ๋ชจ๋์ ์คํ์์ผ ์ํ๋ฅผ ์กฐํํด ๋ณผ ์๋ ์๋ค.
- Ad Hoc ๋ชจ๋๋ playbook์ ์์ฑํ์ง ์๊ณ command-line์์ ์ง์ Ansible Module์ ํธ์ถํด์ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ๋ํ, Chef/Puppet์ฒ๋ผ ๊ธฐ์กด์ ์๋ ค์ง IaC ์๋ฃจ์ ๋ค์ด Target Host๋ค์ Agent๋ฅผ ๋ฐ๋์ ์ค์นํด์ผ ํ๋ ๊ฒ๊ณผ ๋น๊ตํด์, Ansible์ SSH๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Target Host์ Agentless ๋ฐฉ์์ผ๋ก ์๋ํ๋ฅผ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌํ๋ค.
- ์ด๋ฌํ ์ฅ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์๋ฒ, ๋คํธ์ํฌ, ์คํ ๋ฆฌ์ง, ๊ฐ์ํ ์๋ฃจ์ ๋ค์ ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌํ๋ ํธ์์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
(3-2) ํน์ง
- Agentless
๋๋ถ๋ถ์ IaC ๋๊ตฌ๋ค์ด Agent๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑํ๋ Pull ๋ฐฉ์์ ๋๋นํ์ฌ Ansible์ ์๋ํ ๋์ ์ฅ๋น๋ค์ Agentless ๊ธฐ๋ฐ์ Push ๋์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
๋์ ์ฅ๋น์ Agent๋ฅผ ์ค์นํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ์ผํฐ ๋๋ IT ์ธํ๋ผ ๋ด๋น์๋ค์ด ์๋์ ์ผ๋ก ๊ฑฐ๋ถ๊ฐ์ด ๋ํ๊ฒ ๋๊ณ , SSH ๊ธฐ๋ฐ์ผ๋ก ๋๋ถ๋ถ ๋์ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ์ ์ ๊ทผ์ฑ๋ ์ฉ์ดํ๋ค.
์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๊ธฐ์กด IaC ๋๊ตฌ๋ค์ด ์ฃผ๋ก ํ์ ๋ ์๋ฒ ์์ญ์์ ๊ตญํ์ ์ผ๋ก ์ ๊ณต๋์๋ ๋ฐ๋ฉด์, Ansible์ ๋งค์ฐ ํญ๋์ ์์ญ์์ ์ฌ์ฉ๋๋ ์ค์ํ ๊ณ๊ธฐ๊ฐ ๋์๋ค.
- ์ ๊ทผ ์ฉ์ด์ฑ
Python ๊ธฐ๋ฐ์ผ๋ก ์ ์๋์ด Python์ ๋ํ ์ ๋ฌธ ์ง์์ด ์์ด๋ ์ฌ์ฉํ ์ ์์๋งํผ ๊ธฐ์ ์ง์ ์ฅ๋ฒฝ์ด ๋ฎ๊ณ ์ค์ Playbook์ ์คํํ๊ธฐ ์ํด YAML์ ์ฌ์ฉํ์ง๋ง ๊ฐ๋ ์ฑ์์ ํฐ ์ด๋ ค์์ด ์๊ธฐ ๋๋ฌธ์ Devops ์ง์ ๋ ์ฌ์ด์ ์ด ๋๊ฒ ์ฌ์ฉ๋๋๋ฐ ํฐ ์ญํ !
- ๋ค์ํ ๋ชจ๋ ์ง์
๋ฒ์ ์ด ์ง์์ ์ผ๋ก ํจ์น๋๊ณ , ๋์ ์ฌ์ฉ์ ์ธต์ ํ๋ณดํ๊ฒ ๋๋ฉด์ ๋ง์ ๋ชจ๋๋ค์ ์ง์ํ๊ณ ์๋ค.
๋ค์ํ ํด๋ผ์ฐ๋ ์ธํ๋ผ, ๊ฐ์ํ, ์๋ฒ ์ด์์ฒด์ , ํ๋ซํผ ๋ฐ ๋คํธ์ํฌ ์ฅ๋น์ ์คํ ๋ฆฌ์ง ์ฅ๋น๊น์ง ๋งค์ฐ ํญ๋์ ๋ชจ๋๋ค์ ๋ฒ์ ์ด ์ ๊ทธ๋ ์ด๋ ๋ ๋ ๋ง๋ค ํ์ฅํ๊ณ ์๋ค.
- ๋ฉฑ๋ฑ์ฑ
์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ํํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋ ์ฑ์ง์ ๋งํ๋ฉฐ, Ansible์์๋ YAML ์คํฌ๋ฆฝํธ ํ์ผ๋ก ์์ฑ๋ Playbook์ ์ฌ๋ฌ ์ฐจ๋ก ๋ฐ๋ณต์ ํด๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ผํ๊ฒ ์ถ๋ ฅ์์ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋๋ก ๊ตฌ์ฑ๋์ด ๋ฉฑ๋ฑ์ฑ์ ์ผ๊ด๋๊ฒ ์ํํ ์ ์๋ค.
์ค์ IT ๋ด๋น์๊ฐ ์๋ํ ๋๊ตฌ๋ฅผ ์คํํ ๋, ์ค๋์์ด๋ ์ค์ ์ค๋ฅ๋ฑ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ํด ์ฐ๋ คํ ์ ์๋ ๋ถ๋ถ๋ค์ ํด์ํ ์ ์๋๋ก ๋์์ฃผ๊ณ Ansible์ ์คํํ๊ฒ ๋๋ฉด Task๋ฅผ ์ํํ๊ธฐ ์ ์ ๋ชจ๋์ ์ํ๋ฅผ ๋จผ์ ์ฒดํฌํ๊ณ , Task๋ฅผ ์ํํ ๋๋ ์ถ๊ฐ๋ ๊ฒ๊ณผ ๋ณํ๋ ๋ถ๋ถ์ ๋ํ ์ ๋ณด๋ค์ ์ ๊ณตํ์ฌ ์ผ๊ด์ฑ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ ์ ์๋ค.