[Infra] IaC Ansible์„ ์ด์šฉํ•œ Client(ํด๋ผ์ด์–ธํŠธ) ์„œ๋ฒ„ ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

2023. 7. 8. 16:58ใ†System ์ž‘์—…์‹ค/DevOps

728x90
๋ฐ˜์‘ํ˜•

 




 

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

COUPANG

www.coupang.com

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

 

 

 

 

๐Ÿš€ IaC Ansible์„ ์ด์šฉํ•œ Client(ํด๋ผ์ด์–ธํŠธ) ์„œ๋ฒ„ ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

์ด๋ฒˆ์— ํ•  ์ž‘์—…์€ ๊ฝค ๋งŽ์€ ์šฐ๋ถ„ํˆฌ(Ubuntu) ๊ฐ€์ƒ ๋จธ์‹ (Virtual Machine)์— Ansible์„ ์ด์šฉํ•ด์„œ ํฌ๋ฃจ(crew)๋“ค์˜ ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ์ฃผ๋ ค๊ณ  ํ•ด์š”.

์šฐ๋ถ„ํˆฌ ๊ฐ€์ƒ ๋จธ์‹ ์ด ๊ฝค ๋งŽ๊ธฐ๋„ ํ•˜๊ณ , ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ ํ•˜๋Š” ๋ถ„๋“ค๋„ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆ˜์ž‘์—…์œผ๋กœ ๋งŒ๋“ค๊ธฐ์—” ๋„ˆ๋ฌด ํ•  ์ผ๋„ ๋งŽ๊ณ , ๊ทธ๋ ‡๊ฒŒ ํ•œ๋‹ค๋ฉด ์ง„์ •ํ•œ IT์ธ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ด์š”!

Ansible์— ๋Œ€ํ•œ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์€ ์ด ๊ณณ์— ๋‚จ๊ฒจ ๋‘์—ˆ์œผ๋‹ˆ ๋งŽ์€ ๊ด€์‹ฌ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

 

 

    ๐Ÿ”ฝ Ansible

        ๐Ÿ“ฆ Client(ํด๋ผ์ด์–ธํŠธ) Server(์„œ๋ฒ„) ์—ฐ๊ฒฐ

Ansible์—์„œ ๊ฐ๊ฐ์˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ž‘์—…์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ SSH๋ฅผ ์ด์šฉํ•ด ์—ฐ๊ฒฐํ•˜๊ณ , ํ†ต์‹ ํ•˜๊ณ , ์ž‘์—…์„ ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํด๋ผ์ด์–ธํŠธ์™€ SSH ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์ž‘์—… ํ•ด์ฃผ์–ด์•ผ ํ•ด์š”.

์ด ๋•Œ, ๋งค๋ฒˆ ๊ณ„์ •์„ ์ž…๋ ฅํ•˜๊ธฐ์—” ๋ฒˆ๊ฑฐ๋กญ๊ธฐ๋„ ํ•˜๊ณ , ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ฒŒ ํ•  ๋•Œ, ๊ณ„์ •์„ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ „์— ๋งŒ๋“ค์—ˆ๋˜SSH Key๋ฅผ ๊ฐ€์ง€๊ณ , ๊ฐ๊ฐ์˜ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๋Š” ์ž‘์—…์„ ํ•ด ์ค„ ๊ฑฐ์—์š”.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํ•˜๋‚˜์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์—…์„ ํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”.


์œ„ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‘์—…ํ•ด ๋ณผ๊ฒŒ์š”.

์ตœ์ดˆ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ์— SSH๋ฅผ ํ†ตํ•ด root๋กœ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•ด์š”.

ํ•˜์ง€๋งŒ, root๋Š” ์Šˆํผ ๊ถŒํ•œ ์ฆ‰, ์Šˆํผ ์œ ์ €(Super User)์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์„ ์กฐ๊ธˆ ์‹ ๊ฒฝ์จ ๋ณด๋„๋ก ํ• ๊ฑฐ์—์š”.

์ด ๋‚ด์šฉ์€ ์ด ๊ณณ์— ์ •์„ฑ์Šค๋Ÿฝ๊ฒŒ ์ค€๋น„ ํ•ด ๋‘์—ˆ์–ด์š”. ๋งŽ์€ ๊ด€์‹ฌ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


ssh-copy-id -p <SSH Port ๋ฒˆํ˜ธ> <SSH ์ ‘์†ํ•  ๋Œ€์ƒ ์„œ๋ฒ„ ๊ณ„์ •>@<SSH ์ ‘์†ํ•  ๋Œ€์ƒ ์„œ๋ฒ„ IP>

 


์œ„์™€ ๊ฐ™์ด Ansible์—์„œ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ SSH Key๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—… ํ•ด ์ฃผ์—ˆ์–ด์š”.

์ฐธ๊ณ ๋กœ ์ฃผ๋‹ˆ๋Š” SSH Port(ํฌํŠธ)๋ฅผ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•˜๊ธฐ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— -p Option(์˜ต์…˜)์„ ์ฃผ์—ˆ์ง€๋งŒ, ๊ธฐ๋ณธ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

ssh <SSH ์ ‘์†ํ•  ๋Œ€์ƒ ์„œ๋ฒ„ ๊ณ„์ •>@<SSH ์ ‘์†ํ•  ๋Œ€์ƒ ์„œ๋ฒ„ IP> -p <SSH Port ๋ฒˆํ˜ธ>

 


์œ„์™€ ๊ฐ™์ด SSH๋ฅผ ํ†ตํ•ด ์ ‘์† ์‹œ๋„๋ฅผ ํ•ด๋ณด๋ฉด ๊ณ„์ •์„ ๋ฌป์ง€ ์•Š๊ณ , ๋ฐ”๋กœ ๋กœ๊ทธ์ธ์ด ๋˜๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.



ssh-copy-id -p <SSH Port ๋ฒˆํ˜ธ> <SSH ์ ‘์†ํ•  ๋Œ€์ƒ ์„œ๋ฒ„ ๊ณ„์ •>@<SSH ์ ‘์†ํ•  ๋Œ€์ƒ ์„œ๋ฒ„ IP>

728x90


๊ทธ๋Ÿฐ ๋’ค Ansible Docker Container(๋„์ปค ์ปจํ…Œ์ด๋„ˆ) ์ž์‹ ์—๊ฒŒ๋„ ์œ„์™€ ๊ฐ™์ด SSH Key๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ์—ˆ์–ด์š”.


๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
Ansible Module Option

โˆ™ -i (--inventory-file) : ์ ์šฉ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ๋“ค์— ๋Œ€ํ•œ ํŒŒ์ผ ์ •๋ณด.
   ํ•ด๋‹น ์˜ต์…ฅ ์‚ฌ์šฉ ์‹œ /etc/ansible/hosts๊ฐ€ ์•„๋‹Œ ์ง€์ • ์œ„์น˜์— ํŒŒ์ผ์„ ์ฝ์–ด ์ ์šฉ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ ๊ด€๋ฆฌ.

โˆ™ -m (--mocule-name) : Module ์„ ํƒ.

โˆ™ -k (--ask-pass): ๊ด€๋ฆฌ์ž ์•”ํ˜ธ ์š”์ฒญ.

โˆ™ -K (--ask-become-pass) : ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์ƒ์Šน.

โˆ™ --list-hosts : ์ ์šฉ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ ๋ชฉ๋ก ์ •๋ณด.

โˆ™ ๋ฉฑ๋“ฑ์„ฑ ํŠน์ง•
   - ๊ฐ™์€ ์„ค์ •์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ ์šฉํ•˜๋”๋ผ๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๊ณ , ํ•œ๋ฒˆ๋งŒ ์ ์šฉ๋˜๋Š” ์„ฑ์งˆ
   - ์˜ˆ์‹œ:) echo -e "[giggalgroup]\n172.20.10.22" >> /etc/ansible/hosts

 

vim /etc/ansible/hosts

 


๊ทธ๋ฆฌ๊ณ  ์œ„์™€ ๊ฐ™์ด ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋“ฑ๋กํ•ด ์ฃผ์—ˆ์–ด์š”.
์ด ๊ณณ์„ Ansible Inventory๋ผ๊ณ  ๋ถˆ๋Ÿฌ์š”.

๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž์—ด์€ ํด๋ผ์ด์–ธํŠธ๋“ค์„ ๋ฌถ์„ group์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.

 

 

 

        ๐Ÿ“ฆ Ansible ๊ธฐ์ดˆ ์‚ฌ์šฉ

์ตœ์ดˆ Ansible Module ๊ด€๋ จ ๋ฌธ์„œ๋Š” ์ด ๊ณณ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”.

 

ansible all -m ping

 


์œ„ ๋ช…๋ น์–ด๋Š” ๋ชจ๋“  ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ping Test(ํ•‘ ํ…Œ์ŠคํŠธ)๋ฅผ ํ•˜๋ผ๋Š” ๋ช…๋ น์–ด์—์š”.

ํ˜„์žฌ ์ฃผ๋‹ˆ๋Š” SSH๋ฅผ 22๋ฒˆ ํฌํŠธ๋กœ ์“ฐ๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์–ด์š”.
์ฃผ๋‹ˆ์™€ ๊ฐ™์ด 22๋ฒˆ ํฌํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ping์€ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๋Š” Module(๋ชจ๋“ˆ)์ด๊ธฐ ๋•Œ๋ฌธ์— SSH ํฌํŠธ๋ฅผ ๋”ฐ๋กœ ์„ค์ •ํ•  ์ˆœ ์—†์–ด์š”.

 

 

ansible <Group Name> -m ping

 


์œ„์™€ ๊ฐ™์ด ํŠน์ • ๊ทธ๋ฃน์—๋งŒ ์ ์šฉํ•˜์—ฌ ๋ช…๋ น์–ด๋ฅผ ๋‚ ๋ฆด ์ˆ˜๋„ ์žˆ์–ด์š”.


vim /etc/ansible/hosts

 

์œ„์™€ ๊ฐ™์ด 22๋ฒˆ ํฌํŠธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ์œ„์™€ ๊ฐ™์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์š”.
ansible_port ๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•ด์„œ SSH ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

 


์œ„์—์„œ ์‹คํŒจํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ์œ„์™€ ๊ฐ™์ด ํ•ด๊ฒฐํ•œ ๋ชจ์Šต์ด์—์š”.

 

ansible all -m shell -a "free -h"

 


์ด๋ ‡๊ฒŒ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ์–ด์š”.

# free -h ๋ช…๋ น์–ด๋Š” Memory ์ •๋ณด๋ฅผ GB๋‹จ์œ„๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์—์š”.







        ๐Ÿ“ฆ Ansible์„ ์ด์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ(Linux - ๋ฆฌ๋ˆ…์Šค) ์‚ฌ์šฉ์ž ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ์—๋Š” ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ์— ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

๊ทธ ์ „์— ์‚ฌ์šฉ์ž๋“ค์ด ์†Œ์†๋  Group(๊ทธ๋ฃน)์„ ๋งŒ๋“ค์–ด ์ค„๊ฑด๋ฐ, ๊ทธ๋ฃน์€ ํ•œ๋ฒˆ๋งŒ ๋งŒ๋“ค๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๋จผ์ € ์ž‘์—…์„ ํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”.

vim /etc/ansible/roles/make_backend_crew/create_crew_group.yml

๋ฐ˜์‘ํ˜•


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด yml ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ๋ฃน์„ ๋งŒ๋“ค Playbook(ํ”Œ๋ ˆ์ด ๋ถ)์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

2๋ฒˆ์งธ ์ค„์€ Inventory(์ธ๋ฒคํ† ๋ฆฌ) ๋‚ด์— ์ €์žฅ๋œ ํด๋ผ์ด์–ธํŠธ ๊ทธ๋ฃน๋ช…์„ ์˜๋ฏธํ•˜๋Š” ๊ฑฐ์—์š”.

๊ทธ๋ฆฌ๊ณ , 4 ~ 5 ๋ฒˆ์งธ ์ค„์„ ํ†ตํ•ด์„œ ์ž‘์„ฑ๋œ ๋‚ด์šฉ์„ ๊ธ์–ด์™€์„œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ํ˜•์‹์œผ๋กœ ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ, 11, 12 ๋ฒˆ์งธ ์ค„๊ณผ ๊ฐ™์ด item.๋งค๊ฐœ ๋ณ€์ˆ˜๋ช…์„ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ๊ทธ ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ Mapping ๋˜๋Š” ๋ฐฉ์‹์ด์—์š”.

๋งˆ์ง€๋ง‰ with_items ์˜ต์…˜์œผ๋กœ ์ธํ•ด item์— ๋‚ด์šฉ์ด ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค.

vim /etc/ansible/roles/make_backend_crew/crew_group_list.yml

 


์ด ๊ณณ์—์„œ ๋ฐ”๋กœ ๊ทธ๋ฃน ์ •๋ณด๋ฅผ ๋„ฃ์–ด ์ฃผ์—ˆ์–ด์š”. ์œ„์—์„œ item.๋งค๊ฐœ ๋ณ€์ˆ˜๋ช…์ด ๋ฐ”๋กœ ์ด ๊ณณ์— ๊ฐ๊ฐ์˜ ๋ณ€์ˆ˜ ์ด๋ฆ„๋“ค์ด Mapping ๋˜๋Š” ๊ฑฐ์—์š”.

2๋ฒˆ์งธ ์ค„ ๋‚ด์šฉ์œผ๋กœ ์ธํ•ด ์œ„์˜ create_crew_group.yml์˜ with_items ์˜ต์…˜์œผ๋กœ ์ธํ•ด item์— ๋‚ด์šฉ์ด ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค.


 

vim /etc/ansible/roles/make_backend_crew/Inventory

 


๋งŒ์•ฝ ์œ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ /etc/ansible/hosts์— ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ํด๋ผ์ด์–ธํŠธ ์ •๋ณด ๋ง๊ณ , ๊ฐœ๋ณ„๋กœ ์‚ฌ์šฉํ•  ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.


ansible-playbook -i <Inventory Path>/<Inventory Name> <Playbook Path>/<Playbook Name>.yml

 


๋งŒ์•ฝ ์ธ๋ฒคํ† ๋ฆฌ๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด -i ์˜ต์…˜์„ ํ†ตํ•ด ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ฃผ๋‹ˆ๋Š” ๊ณต์šฉ ์ธ๋ฒคํ† ๋ฆฌ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ง„ํ–‰ํ•  ๊ฑฐ์—์š”.

ansible-playbook <Playbook Path>/<Playbook Name>.yml

 


์œ„์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ์— ๊ทธ๋ฃน์ด ๋งŒ๋“ค์–ด ์กŒ๋‹ค๊ณ  ๋‚˜์™”์–ด์š”.


์ด๋ ‡๊ฒŒ ๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ์— ๊ทธ๋ฃน์ด ์ž˜ ๋งŒ๋“ค์–ด์ง„๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.


์ด๋ฒˆ์—๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ๋ณผ๊ฒŒ์š”.


vim /etc/ansible/roles/make_backend_crew/make_crew/crewlist.yml

 


์ตœ์ดˆ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์— ์ ‘์† ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ํฌ๋ฃจ๋“ค์— ๊ณ„์ • ์ •๋ณด๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

backend_crew_list:  
  - {id: '<์‚ฌ์šฉ์ž ๊ณ„์ •(ID)>', uid: <์‚ฌ์šฉ์ž UID>, groups: ['<์‚ฌ์šฉ์ž ์†Œ์† ๊ทธ๋ฃน ์ด๋ฆ„>', '<์‚ฌ์šฉ์ž ์†Œ์† ๊ทธ๋ฃน ์ด๋ฆ„>', ...], password: '<์‚ฌ์šฉ์ž ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ>', comment: '<์‚ฌ์šฉ์ž ๊ณ„์ • ๋ณ„์นญ ํ˜น์€ ๋ฉ”๋ชจ>'}

 


์ฃผ๋‹ˆ๋Š” ํ•œ ๊ณ„์ •์„ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์— ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑ์„ ํ•ด ์ฃผ์—ˆ์–ด์š”.

vim /etc/ansible/roles/make_backend_crew/make_crew/create_crew.yml

 

๊ทธ๋ฃน์„ ๋งŒ๋“ค์—ˆ์„ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณ„์ • ๊ด€๋ จํ•ด์„œ๋„ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๊ฐ€์ ธ์™€์„œ ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์—…ํ•ด ์ฃผ์—ˆ์–ด์š”.

password ๋ถ€๋ถ„์— password_hash('sha512') ์ด ๋ถ€๋ถ„์€ Hashing ํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋„ฃ์–ด์ค€ ๋ถ€๋ถ„์ด์—์š”.

์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•  ์ ์€ update_password ๋ถ€๋ถ„์ด์—์š”. ์˜ต์…˜์œผ๋กœ on_create์™€ always๊ฐ€ ๋Œ€ํ‘œ์ ์ธ๋ฐ, on_create๋Š” ๊ณ„์ • ์ƒ์„ฑ ์ค‘ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๊ณ , always๋Š” ๊ธฐ์กด ๊ณ„์ •์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ด์—์š”.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— always๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•ด์š”.

๋˜ํ•œ, Expiere Date Time Password for Crew ์ž‘์—…์— shell ๋ถ€๋ถ„์€ ๊ณ„์ •๋“ค์˜ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด๋ฅผ ๋„ฃ์–ด ์ฃผ์—ˆ์–ด์š”. ์ตœ์†Œ 1์ผ ์ด์ƒ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ , 90์ผ ๋™์•ˆ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ์—ˆ์–ด์š”. 



ansible-playbook <Playbook Name>

 


์œ„์™€ ๊ฐ™์ด ์ •์ƒ์ ์œผ๋กœ ๊ณ„์ • ์ƒ์„ฑ๊ณผ ์„ค์ •์ด ์™„๋ฃŒ๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.


ํด๋ผ์ด์–ธํŠธ์—์„œ ํ™•์ธํ•ด ๋ณด๋‹ˆ ๊ทธ๋ฃน๋„ ์ž˜ ๋งŒ๋“ค์–ด ์กŒ๊ณ , ์‚ฌ์šฉ์ž ๊ณ„์ •๋„ ๋ชจ๋‘ ๋งŒ์กฑ์Šค๋Ÿฝ๊ฒŒ ์„ค์ •๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.





 

 

 

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

 

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

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

junyharang.tistory.com

 

 

Linux ssh-copy-id

1. ssh-copy-id ํ˜„์žฌ ํ˜ธ์ŠคํŠธ์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์˜ authorized_keys์— ๋“ฑ๋กํ•œ๋‹ค. ๊ณต๊ฐœํ‚ค๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ์•”ํ˜ธ๋‚˜ ์ธ์ฆํ‚ค๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์•„๋„ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

dejavuhyo.github.io

 

 

[Ansible] host ์ˆœํšŒํ•˜๋ฉด์„œ custom variable ์ฐธ์กฐํ•˜๊ธฐ

์ฃผ๋กœ ssh๋‚˜ xrdp ๊ฐ™์€ well known port ๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, Ansible์—์„œ ๋ชจ๋“  host ๋งˆ๋‹ค ๋‹ค๋ฅธ ssh, xrdp port๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ playbook์—์„œ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ•ด์„œ ํ•ด์ฃผ์–ด์•ผ

4whomtbts.tistory.com

 

 

[ansible] ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋™์ผํ•œ ์œ ์ €๊ณ„์ • ์ƒ์„ฑํ•˜๊ธฐ

์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๋Œ€ ์žˆ์„ ๋•Œ, ๋™์ผํ•œ ์œ ์ €๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ด€๋ฆฌํ•˜๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š๋‹ค. ์ผ๋‹จ, ๋งŒ๋“ค๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ  ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ํŠนํžˆ ํŒจ์Šค์›Œ๋“œ๊ฐ€ 1234, abcd ๊ฐ™์ด ๊ฐ„๋‹จํ•˜์ง€ ์•Š๊ณ  ์‹ญ ์ˆ˜ ์ž๋ฆฌ์— ๋Œ€์†Œ๋ฌธ์ž ์˜/ํŠน์ˆ˜๋ฌธ์ž

4whomtbts.tistory.com

 

 

 

 

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

COUPANG

www.coupang.com

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

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•