[๊ฐ์ํ - Container] Docker๋ฅผ ์ด์ฉํ Ansible ์ค์นํ๊ธฐ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Docker๋ฅผ ์ด์ฉํ Ansible ์ค์นํ๊ธฐ
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
Infrastructure as Code (IaC)๋ ์ฝ๋ํ ์ธํ๋ผ๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ์๋ ํ๋ก์ธ์ค๊ฐ ์๋ ์ฝ๋๋ฅผ ํตํด ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํ๋ก๋น์ ๋ํ๋ ๊ฒ์ ๋งํด์.
IaC๋ฅผ ์ด์ฉํ๋ฉด ์ธํ๋ผ ์ฌ์์ ๋ด์ ๊ตฌ์ฑ ํ์ผ์ด ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฑ์ ํธ์งํ๊ณ , ๋ฐฐํฌํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๊ฒ ๋ฉ๋๋ค.
๋ํ, ๋งค๋ฒ ๋์ผํ ํ๊ฒฝ์ ํ๋ก๋น์ ๋ํ๋๋ก ๋ณด์ฅํ ์ ์์ด์.
IaC๋ ๊ตฌ์ฑ ์ฌ์์ ์ฝ๋ํ ํ๊ณ , ๋ฌธ์ํ ํจ์ผ๋ก ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌธ์ํํ์ง ์๊ณ , ์์๋ก ๋ณ๊ฒฝํ๋ ์ผ์ ๋ง์ ์ ์๋ ์ฅ์ ์ด ์์ด์.
๋ฒ์ ์ ์ด๋ IaC์ ์ค์ํ ๋ถ๋ถ์ด์์. ๋ค๋ฅธ ์ํํธ์จ์ด ์์ค ์ฝ๋ ํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ์ฑ ํ์ผ๋ ์์ค ์ ์ด๊ฐ ํ์ํ๋ต๋๋ค. ์ฝ๋๋ก ์ธํ๋ผ๋ฅผ ๋ฐฐํฌํ๋ค๋ ๊ฒ์ ์ธํ๋ผ๋ฅผ ๋ชจ๋์ ๊ตฌ์ฑ ์์๋ก ๋ถํํ๊ณ , ์๋ํ๋ฅผ ํตํด ๋ค์ํ ๋ฐฉ์์ผ๋ก ๊ฒฐํฉํ ์ ์๋ค๋ ๋ป์ด์์.
IaC๋ก ์ธํ๋ผ ํ๋ก๋น์ ๋์ ์๋ํํ๊ฒ ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๊ฑฐ๋, ๋ฐฐํฌํ ๋๋ง๋ค ๊ฐ๋ฐ์๊ฐ ์ง์ ์๋ฒ, ์ด์์ฒด์ , ์คํ ๋ฆฌ์ง, ๊ธฐํ ์ธํ๋ผ ๊ตฌ์ฑ ์์๋ฅผ ์๋์ผ๋ก ํ๋ก๋น์ ๋ํ๊ณ , ๊ด๋ฆฌํ ํ์๊ฐ ์์ด์ ธ์.
์ด๋ฌํ ์์
์ ์๋์ผ๋ก ์งํํ ์๋ ์๊ณ , Ansible๊ณผ ๊ฐ์ ์๋ํ ํด์ ์ด์ฉํ ์๋ ์์ด์.
1. ์์คํ
, ํ๋์จ์ด ๋๋ ์ธํฐํ์ด์ค์ ๊ตฌ์ฑ์ ๋ณด๋ฅผ ํ์ผ(์คํฌ๋ฆฝํธ)์ ํตํด ๊ด๋ฆฌ ๋ฐ ํ๋ก๋น์ ๋.
2. IT Infrastructure, Bare Metal Server ๋ฑ ๋ฌผ๋ฆฌ ์ฅ๋น ๋ฐ ๊ฐ์ ๋จธ์ ๊ณผ ๊ด๋ จ๋ ๊ตฌ์ฑ ์์ ๊ด๋ฆฌ.
3. ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํ ์์ ๊ด๋ฆฌ.
1. Infrastructure as Code(IaC)๋ฅผ ์ฌ์ฉํ๊ธฐ ์
IaC๊ฐ ๋์
๋๊ธฐ ์ด์ ์๋ ๋จ๋ง๊ธฐ(Laptop, Desktop ๋ฑ)์ ํตํด Server๋ฅผ ๊ด๋ฆฌํด์ค์ผ ํด์.
๋ง์ฝ ํน์ Server๋ฅผ ์ฌ์ฉ ๋ชปํ ์ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด ํด๋น Server๋ฅผ ๋ผ์ด๋ด๊ณ , ์๋ก์ด Server๋ฅผ ๋์
ํด์ผ ํด์.
์ด ๋ชจ๋ ์์
์ ํฐ๋ฏธ๋ ๋ฑ์ ์ด์ฉํด์ ์ง์ ์๋์ผ๋ก ํด์ค์ผ ํฉ๋๋ค.
2. Infrastructure as Code(IaC)๋ฅผ ์ฌ์ฉํ๊ธฐ ํ
๋จผ์ Ansible๊ณผ ๊ฐ์ ์ํํธ์จ์ด๋ฅผ ๋์
ํ๊ฒ ๋๋ฉด Ansible๊ณผ Server๋ฅผ ์ฐ๋ ์์ผ์ฃผ๊ณ , Server์ ๋ชฉ๋ก(Inventory)์ Server๋ค์ ๊ด๋ฆฌํจ์ ์์ด ํ์ํ ์์
๋ค์ ์ ์ฐจ๋ฅผ ๋ด์ ๋๋ File (Play Books)๋ฅผ ์ง์ ํด ์ฃผ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ Server ํ ๋๊ฐ ์ฌ์ฉ ๋ชปํ ์ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด ํด๋น Server๋ฅผ ๋ผ์ด๋ด๊ณ , ๋ค๋ฅธ Server๋ฅผ ๊ตฌ์ถํ์ ๋, ์๋์ผ๋ก ํ์ํ ์ค์ ์ด๋, ํ๊ฒฝ๋ค์ ๊ตฌ์ฑํ ์ ์๊ฒ ํ ์ ์์ด์.
์ฃผ๋๊ฐ ๊ตฌ์ถํด ๋ณผ Ansible์ Agnet๊ฐ ํ์ ์๋ค๋ ํน์ง์ด ์์ด์.
๊ฐ๊ฐ์ Server์ Python์ด ์ค์น๋์ด ์๋ค๋ฉด Python์ด ๊ฐ์ง๊ณ ์๋ Network Module์ ํตํด ๊ด๋ฆฌ Server์ ํต์ ์ ํ ์ ์๊ฒ ํ ์ ์์ด์.
๐ฆ Ansible์ด๋?
ใฑ. ์ฌ๋ฌ ๊ฐ์ Server๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ํ๊ฒฝ ๊ตฌ์ฑ ์๋ํ ๋๊ตฌ
โ Configuration Management, Deployment & Orchestration Tool.
โ IT Infrastructure Automatically.
ใด. Push ๊ธฐ๋ฐ Service
ใท. Simple, Agentless ๋ฐฉ์
ใน. Ansible์ ํตํด ํ ์ ์๋ ์ผ
โ ์ค์น : apt-get, yum, homebrew ๋ฑ.
โ File & Script ๋ฐฐํฌ : copy.
โ Download : get_url, git ๋ฑ.
โ ์คํ : shell, task
๐ฝ ์ค์น ๋ฐ ๊ตฌ์ถ
๐ฆ Ubuntu Docker Container ์ค๋น
Ubuntu Docker Image๋ ์ด์ ์ Systemctl ๋ช
๋ น์ด๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ Ubuntu 22.04 LTS Docker Image๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์์.
์ด ๋ถ๋ถ์ ๋ํด ๊ถ๊ธํ์ ๋ถ๋ค์ ์ด ๊ณณ์ ๊ด์ฌ์ ์ฃผ์ธ์.
์ด๋ฒ์ ํด๋น Image๋ฅผ ๊ฐ์ง๊ณ , Docker Cotainer๋ฅผ ๊ธฐ๋ ์ํฌ ์ ์๋ Shell Script๋ฅผ ๋ง๋ค์ด ๋ณผ๊ฒ์.
์์ ๊ฐ์ด Docker ๊ธฐ๋์ฉ ๋ช
๋ น์ด๋ฅผ ๋ด์ Shell Script๋ฅผ ์ค๋นํด ์ฃผ์์ด์.
์์ ๊ฐ์ด Docker Container๊ฐ ์ ์ ๊ธฐ๋๋๊ฑธ ์ ์ ์์ด์.
Ansible ์ฉ์ผ๋ก ์ฌ์ฉํ Docker์ ์ง์
ํด ์ฃผ์์ด์.
๐ฆ Ansible ์ค์น
Package ์ต์ ํ ์์
์ ๋จผ์ ์งํํด ์ค๋๋ค.
์ฌ์ค ์ฃผ๋๊ฐ ๋ง๋ ์ด Docker๋ ๋ง๋ค ๋น์์ ์ด๋ฏธ ์ต์ ํ๋ฅผ ํด์ฃผ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์๋ฌด๊ฒ๋ ํ์ง ์์๊ฒ์ด์์.
์ต์ด ์์ ๊ฐ์ด ํ์ํ Package ๋ค์ ์ค๋นํด ๋ณผ๊ฒ์.
APT Data์ ๊ณต์ Ansible Repository๋ฅผ ์ถ๊ฐํ๋ ค ํ์ง๋ง, ์์ ๊ฐ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ด์.
์ด ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด ๊ณณ์ ์ค๋นํด ๋์์ด์.
๊ทธ๋ฐ ๋ค ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์งํ์ ํด ์ฃผ์์ด์.
ENTER๋ฅผ ๋๋ฅด๋ฉด ๊ณ์ ์งํํ ๊ฑฐ์์.
์ด์ ansible์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ค์นํด ์ฃผ๋๋ก ํ ๊ฒ์.
์ด๋ ๊ฒ Ansible์ด ์ค๋น ๋์์ด์.
ํด๋น ๊ณ์ ์ผ๋ก ์ ์ํด์ค๊ฒ์.
์ด์ SSH Key๋ฅผ ๋ง๋ค์ด ์ค๊ฑฐ์์.
๋ชจ๋ ์ค์ ์ ๊ธฐ๋ณธ๊ฐ(Enter)๋ฅผ ํตํด ๋ง๋ค์ด ์ฃผ์์ด์.
์ฌ๊ธฐ๊น์ง๊ฐ Ansible ์ค์น ๋ฐ ๊ตฌ์ถํธ์ด์์.
์ด์ ํ๋ก์ ํธ๋ฅผ ๊ณ์ ์งํํ๋ฉด์ Ansible ์ฆ, IaC๋ฅผ ๋ง์ด ์ด์ฉํ๊ฒ ๋ ํ
๋ฐ,
๊ทธ๋๋ง๋ค ์ฃผ๋๊ฐ ํ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ ค ๋๋ฆด๊ฒ์.
๐ง ์ฐธ๊ณ ์๋ฃ
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."