[๊ฐ€์ƒํ™” - Container] Docker๋ฅผ ์ด์šฉํ•œ Ansible ์„ค์น˜ํ•˜๊ธฐ

2023. 7. 14. 06:00ใ†System ์ž‘์—…์‹ค/DevOps

728x90
๋ฐ˜์‘ํ˜•

 




 

์•ค์„œ๋ธ” ์ฒ ์ € ์ž…๋ฌธ:Ansible๋กœ ํด๋ผ์šฐ๋“œ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ์ž๋™ํ™”ํ•˜๊ธฐ

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

๐Ÿš€ 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๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ๊ฒŒ์š”.

vim giggal_ansible.sh

728x90




์œ„์™€ ๊ฐ™์ด Docker ๊ธฐ๋™์šฉ ๋ช…๋ น์–ด๋ฅผ ๋‹ด์€ Shell Script๋ฅผ ์ค€๋น„ํ•ด ์ฃผ์—ˆ์–ด์š”.



์œ„์™€ ๊ฐ™์ด Docker Container๊ฐ€ ์ •์ƒ ๊ธฐ๋™๋œ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.



Ansible ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  Docker์— ์ง„์ž…ํ•ด ์ฃผ์—ˆ์–ด์š”.








        ๐Ÿ“ฆ Ansible ์„ค์น˜


Package ์ตœ์‹ ํ™” ์ž‘์—…์„ ๋จผ์ € ์ง„ํ–‰ํ•ด ์ค๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ฃผ๋‹ˆ๊ฐ€ ๋งŒ๋“  ์ด Docker๋Š” ๋งŒ๋“ค ๋‹น์‹œ์— ์ด๋ฏธ ์ตœ์‹ ํ™”๋ฅผ ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์€๊ฒƒ์ด์—์š”.

apt-get install -y apt-transport-https wget gnupg

 

 

์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด ํ•„์š”ํ•œ Package ๋“ค์„ ์ค€๋น„ํ•ด ๋ณผ๊ฒŒ์š”.


apt-add-repository ppa:ansible/ansible

๋ฐ˜์‘ํ˜•


APT Data์— ๊ณต์‹ Ansible Repository๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค ํ–ˆ์ง€๋งŒ, ์œ„์™€ ๊ฐ™์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์–ด์š”.

์ด ๋ฌธ์ œ์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์ด ๊ณณ์— ์ค€๋น„ํ•ด ๋‘์—ˆ์–ด์š”.

 



๊ทธ๋Ÿฐ ๋’ค ๋‹ค์‹œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ง„ํ–‰์„ ํ•ด ์ฃผ์—ˆ์–ด์š”.

ENTER๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ณ„์† ์ง„ํ–‰ํ• ๊ฑฐ์—์š”.



apt-get install -y ansible

 


์ด์ œ ansible์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„ค์น˜ํ•ด ์ฃผ๋„๋ก ํ• ๊ฒŒ์š”.


ansible --version

 


์ด๋ ‡๊ฒŒ Ansible์ด ์ค€๋น„ ๋˜์—ˆ์–ด์š”.



useradd -m -s /bin/bash ansible

 


ํ•ด๋‹น ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•ด์ค„๊ฒŒ์š”.


su ansible

 



์ด์ œ SSH Key๋ฅผ ๋งŒ๋“ค์–ด ์ค„๊ฑฐ์—์š”.


ssh-keygen

 


๋ชจ๋“  ์„ค์ •์€ ๊ธฐ๋ณธ๊ฐ’(Enter)๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ Ansible ์„ค์น˜ ๋ฐ ๊ตฌ์ถ•ํŽธ์ด์—์š”.

์ด์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๋ฉด์„œ Ansible ์ฆ‰, IaC๋ฅผ ๋งŽ์ด ์ด์šฉํ•˜๊ฒŒ ๋ ํ…๋ฐ,
๊ทธ๋•Œ๋งˆ๋‹ค ์ฃผ๋‹ˆ๊ฐ€ ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๋“ค๋ ค ๋“œ๋ฆด๊ฒŒ์š”. 

 

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

 

[DevOps] Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipeline ๊ตฌ์ถ• - Jenkins + Infrastructure as Code ์™€์˜ ์—ฐ๋™ - Ansible

์ด ๋‚ด์šฉ์€ ์ธํ”„๋Ÿฐ - Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipeline ๊ตฌ์ถ• ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์˜ Code ๋‚ด์šฉ์€ ์ด ๊ณณ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ—‚ ๋ชฉ์ฐจ โ— [DevOps] Jenkins๋ฅผ ์ด์šฉํ•œ CI/CD Pipeline ๊ตฌ

junyharang.tistory.com

 

 

 

 

์•ค์„œ๋ธ” ์ฒ ์ € ์ž…๋ฌธ:Ansible๋กœ ํด๋ผ์šฐ๋“œ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ์ž๋™ํ™”ํ•˜๊ธฐ

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•