"์Šคํƒ€ํŠธ์—…"๋ถ€ํ„ฐ XNUMX๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„๊นŒ์ง€. Linux ์ธํ”„๋ผ์˜ ์„ฑ์žฅ์„ ์ถ”์ ํ•œ ๋ฐฉ๋ฒ•

IT ์ธํ”„๋ผ๊ฐ€ ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๋ฉด ์กฐ๋งŒ๊ฐ„ ์ด๋ฅผ ์ง€์›ํ•  ์ธ์  ์ž์›์„ ์„ ํ˜•์ ์œผ๋กœ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ž๋™ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์„ ํƒ์— ์ง๋ฉดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ์ฒซ ๋ฒˆ์งธ ํŒจ๋Ÿฌ๋‹ค์ž„์— ์‚ด์•˜๊ณ , ์ดํ›„ ์ธํ”„๋ผํ˜• ์ฝ”๋“œ(Infrastructure-as-Code)๋ฅผ ํ–ฅํ•œ ๊ธด ์—ฌ์ •์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"์Šคํƒ€ํŠธ์—…"๋ถ€ํ„ฐ XNUMX๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„๊นŒ์ง€. Linux ์ธํ”„๋ผ์˜ ์„ฑ์žฅ์„ ์ถ”์ ํ•œ ๋ฐฉ๋ฒ•

๋ฌผ๋ก  NSPK๋Š” ์Šคํƒ€ํŠธ์—…์€ ์•„๋‹ˆ์ง€๋งŒ ์ฐฝ๋ฆฝ ์ฒซํ•ด์—๋Š” ๊ทธ๋Ÿฌํ•œ ๋ถ„์œ„๊ธฐ๊ฐ€ ํšŒ์‚ฌ๋ฅผ ์ง€๋ฐฐํ–ˆ๊ณ  ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ํ•ด์˜€์Šต๋‹ˆ๋‹ค. ๋‚ด ์ด๋ฆ„์€ ์ฝ”๋ฅด๋ƒ์ฝ”ํ”„ ๋“œ๋ฏธํŠธ๋ฆฌ, ์ €๋Š” 10๋…„ ๋„˜๊ฒŒ ๊ณ ๊ฐ€์šฉ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฐ–์ถ˜ Linux ์ธํ”„๋ผ๋ฅผ ์ง€์›ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” 2016๋…„ XNUMX์›” NSPK ํŒ€์— ํ•ฉ๋ฅ˜ํ–ˆ๊ณ , ์•ˆํƒ€๊น๊ฒŒ๋„ ํšŒ์‚ฌ์˜ ์‹œ์ž‘์„ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ ํฐ ๋ณ€ํ™”์˜ ๋‹จ๊ณ„์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ ํŒ€์€ ํšŒ์‚ฌ์— 2๊ฐœ์˜ ์ œํ’ˆ์„ ๊ณต๊ธ‰ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค. ๋ฉ”์ผ์ด ์ž‘๋™ํ•ด์•ผ ํ•˜๊ณ , DNS๋„ ์ž‘๋™ํ•ด์•ผ ํ•˜๋ฉฐ, ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์„œ๋ฒ„์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์‚ฌ์˜ IT ํ™˜๊ฒฝ์€ ์—„์ฒญ๋‚ฉ๋‹ˆ๋‹ค! ์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ์‹œ์Šคํ…œ์ด๋ฉฐ ์ผ๋ถ€ ๊ฐ€์šฉ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์€ 99,999์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ œํ’ˆ์€ ๋ฌผ๋ฆฌ์  ๋ฐ ๊ฐ€์ƒ ์„œ๋ฒ„ ์ž์ฒด์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์ œํ’ˆ์€ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ œํ’ˆ์€ ์—ฌ๋Ÿฌ ๋ถ€์„œ์˜ ๊ณ ๊ฐ์—๊ฒŒ ์ •๊ธฐ์ ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์„œ๋ฒ„ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ธํ”„๋ผ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ–ˆ๋Š”์ง€์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์—ฌํ–‰์˜ ์‹œ์ž‘

์—ฌ์ • ์ดˆ๊ธฐ์— ์šฐ๋ฆฌ์˜ ๊ธฐ์ˆ  ์Šคํƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.
OS ์„ผํŠธOS 7
FreeIPA ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ
์ž๋™ํ™” - Ansible(+Tower), Cobbler

์ด ๋ชจ๋“  ๊ฒƒ์€ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„์‚ฐ๋œ 3๊ฐœ์˜ ๋„๋ฉ”์ธ์— ์œ„์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—๋Š” ์‚ฌ๋ฌด์‹ค ์‹œ์Šคํ…œ๊ณผ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๊ณ  ๋‚˜๋จธ์ง€์—๋Š” PROD๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ์ง€์ ์—์„œ ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"์Šคํƒ€ํŠธ์—…"๋ถ€ํ„ฐ XNUMX๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„๊นŒ์ง€. Linux ์ธํ”„๋ผ์˜ ์„ฑ์žฅ์„ ์ถ”์ ํ•œ ๋ฐฉ๋ฒ•

VM ํ…œํ”Œ๋ฆฟ์—์„œ CentOS๋Š” ์ตœ์†Œ์ด๊ณ  ํ•„์š”ํ•œ ์ตœ์†Œ๊ฐ’์€ ์˜ฌ๋ฐ”๋ฅธ /etc/resolv.conf์™€ ๊ฐ™์œผ๋ฉฐ ๋‚˜๋จธ์ง€๋Š” Ansible์„ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

CMDB - ์—‘์…€.

์„œ๋ฒ„๊ฐ€ ๋ฌผ๋ฆฌ์ ์ธ ๊ฒฝ์šฐ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ณต์‚ฌํ•˜๋Š” ๋Œ€์‹  Cobbler๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OS๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ƒ ์„œ๋ฒ„์˜ MAC ์ฃผ์†Œ๊ฐ€ Cobbler ๊ตฌ์„ฑ์— ์ถ”๊ฐ€๋˜๊ณ  ์„œ๋ฒ„๋Š” DHCP๋ฅผ ํ†ตํ•ด IP ์ฃผ์†Œ๋ฅผ ๋ฐ›์€ ๋‹ค์Œ OS๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” Cobbler์—์„œ ์ผ์ข…์˜ ๊ตฌ์„ฑ ๊ด€๋ฆฌ๋ฅผ ์‹œ๋„ํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ด๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€ VM ์ค€๋น„๋ฅผ ์œ„ํ•œ Ansible ์ฝ”๋“œ ๋ชจ๋‘์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์ด์‹์„ฑ์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹น์‹œ ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ Ansible์„ Bash์˜ ํŽธ๋ฆฌํ•œ ํ™•์žฅ์œผ๋กœ ์ธ์‹ํ–ˆ์œผ๋ฉฐ Shell๊ณผ sed๋ฅผ ์‚ฌ์šฉํ•œ ์„ค๊ณ„๋ฅผ ๊ฐ„๊ณผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ Bashsible. ์ด๋Š” ๊ถ๊ทน์ ์œผ๋กœ ์–ด๋–ค ์ด์œ ๋กœ ํ”Œ๋ ˆ์ด๋ถ์ด ์„œ๋ฒ„์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ”Œ๋ ˆ์ด๋ถ์„ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ๋‚˜ ๊ตฌ์„ฑ ์ด์‹์„ฑ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ชจ๋“  ์„œ๋ฒ„์˜ ์ผ๋ถ€ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋…ผ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ/๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๊ธฐ์กด ์„œ๋ฒ„ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ํ•˜๋ฃจ ๋งŒ์— ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๋Œ€์ˆ˜์˜ ๋ฒ•์น™์œผ๋กœ ์ธํ•ด ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ•œ ๋ฒˆ์— ์ ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ž ์žฌ์ ์œผ๋กœ ํŒŒ๊ดด์ ์ด๋ฉฐ ์„œ๋น„์Šค์—์„œ OS ์ž์ฒด์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. Ansible์—์„œ ์ˆ˜์ •
  3. Cobbler์—์„œ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  4. ๊ฐ ๋…ผ๋ฆฌ์  ์„ธ๊ทธ๋จผํŠธ/๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋Œ€ํ•ด N๋ฒˆ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ณ€ํ™”๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งŽ์€ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ–ˆ๊ณ , ๋ณ€ํ™”๋Š” ๋Š์ž„์—†์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Ansible ์ฝ”๋“œ, ๊ตฌ์„ฑ ํŒŒ์ผ ๋ฆฌํŒฉํ† ๋ง
  • ๋‚ด๋ถ€ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ณ€๊ฒฝ
  • ์‚ฌ๊ฑด/์‚ฌ๊ณ  ๋ถ„์„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ๋ณ€๊ฒฝ
  • ๋‚ด๋ถ€ ๋ฐ ์™ธ๋ถ€ ๋ชจ๋‘์—์„œ ๋ณด์•ˆ ํ‘œ์ค€์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด PCI DSS๋Š” ๋งค๋…„ ์ƒˆ๋กœ์šด ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์ธํ”„๋ผ ์„ฑ์žฅ๊ณผ ์—ฌ์ •์˜ ์‹œ์ž‘

์„œ๋ฒ„/๋…ผ๋ฆฌ ๋„๋ฉ”์ธ/๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ–ˆ๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๊ตฌ์„ฑ ์˜ค๋ฅ˜๋„ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ตฌ์„ฑ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉํ–ฅ์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค.

  1. ์˜คํ† ๋ฉ”์ด์…˜. ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์—์„œ๋Š” ์ธ์  ์˜ค๋ฅ˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ˜๋ณต์„ฑ. ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๋ฉด ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„ ๋ฐ ๋„๊ตฌ ๊ตฌ์„ฑ์€ ๋ชจ๋“  ๊ณณ์—์„œ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ œํ’ˆ ํŒ€์—๊ฒŒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ›„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๊ตฌ์„ฑ๋œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋๋‚˜๋„๋ก ๋ณด์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ณ€๊ฒฝ์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ํˆฌ๋ช…์„ฑ.

๋ช‡ ๊ฐ€์ง€ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํŠนํžˆ ๋‚ด์žฅ๋œ CI/CD ๋ชจ๋“ˆ์„ ์œ„ํ•ด GitLab CE๋ฅผ ์ฝ”๋“œ ์ €์žฅ์†Œ๋กœ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋น„๋ฐ€ ๊ธˆ๊ณ  - Hashicorp Vault, incl. ํ›Œ๋ฅญํ•œ API๋ฅผ ์œ„ํ•ด.

๊ตฌ์„ฑ ๋ฐ Ansible ์—ญํ•  ํ…Œ์ŠคํŠธ โ€“ Molecule+Testinfra. ansible mitogen์— ์—ฐ๊ฒฐํ•˜๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ์ž๋™ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ž์ฒด CMDB์™€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค(Cobbler ์œ„ ๊ทธ๋ฆผ ์ฐธ์กฐ). ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ด๋ฉฐ, ๋‚ด ๋™๋ฃŒ์ด์ž ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์˜ ์ฃผ์š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์•ž์œผ๋กœ ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์„ ํƒ:

๋ถ„์ž + ํ…Œ์ŠคํŠธ์ธํ”„๋ผ
์•ค์„œ๋ธ” + ํƒ€์›Œ + AWX
World of Servers + DITNET (์ž์ฒด ๊ฐœ๋ฐœ)
๊ตฌ๋‘ ์ˆ˜์„ ๊ณต
Gitlab + GitLab ๋Ÿฌ๋„ˆ
ํ•˜์‹œ์ฝ”ํ”„ ๊ธˆ๊ณ 

"์Šคํƒ€ํŠธ์—…"๋ถ€ํ„ฐ XNUMX๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„๊นŒ์ง€. Linux ์ธํ”„๋ผ์˜ ์„ฑ์žฅ์„ ์ถ”์ ํ•œ ๋ฐฉ๋ฒ•

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , Ansible ์—ญํ• ์— ๋Œ€ํ•ด. ์ฒ˜์Œ์—๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์—ˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ๋ฆฌํŒฉํ† ๋ง์„ ๊ฑฐ์ณ 17๊ฐœ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ๋ฉฑ๋“ฑ์„ฑ ์—ญํ• ๋กœ ๋ถ„๋ฆฌํ•œ ๋‹ค์Œ ๋ณ„๋„๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ  ์ถ”๊ฐ€๋กœ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ, ๋กœ๊น…, ํŒจํ‚ค์ง€, ํ•˜๋“œ์›จ์–ด, ๋ถ„์ž ๋“ฑ ๊ธฐ๋Šฅ๋ณ„๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์•„๋ž˜ ์ „๋žต์„ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์œ ์ผํ•œ ์ง„์‹ค์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • "๊ณจ๋“  ์ด๋ฏธ์ง€"์—์„œ ์„œ๋ฒ„๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์•…ํ•ฉ๋‹ˆ๋‹ค!๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ํ˜„์žฌ ์ด๋ฏธ์ง€๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†์œผ๋ฉฐ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ชจ๋“  ๊ฐ€์ƒํ™” ํŒœ์˜ ๋ชจ๋“  ์ด๋ฏธ์ง€์— ์ ์šฉ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ๋ณธ ์‹œ์Šคํ…œ ํŒŒ์ผ์„ ๋‹ด๋‹นํ•˜๋Š” ๋‹ค๋ฅธ ๋ถ€์„œ์™€ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.์˜ˆ :
    1. /etc/sysctl.conf๋ฅผ ๋น„์›Œ๋‘๊ณ  ์„ค์ •์€ /etc/sysctl.d/์—๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ํŒŒ์ผ์˜ ๊ธฐ๋ณธ๊ฐ’์€ ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜์ž…๋‹ˆ๋‹ค.
    2. ๋Œ€์ฒด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๋‹จ์œ„๋ฅผ ํŽธ์ง‘ํ•˜์‹ญ์‹œ์˜ค.
  • ๋ชจ๋“  ๊ตฌ์„ฑ์„ ํ…œํ”Œ๋ฆฟํ™”ํ•˜๊ณ  ์™„์ „ํžˆ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ํ”Œ๋ ˆ์ด๋ถ์— sed๋‚˜ ๊ทธ ์œ ์‚ฌ ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ตฌ์„ฑ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง:
    1. ์ž‘์—…์„ ๋…ผ๋ฆฌ์  ์—”ํ„ฐํ‹ฐ๋กœ ๋‚˜๋ˆ„๊ณ  ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์—ญํ• ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
    2. ๋ฆฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”! Ansible-lint, yaml-lint ๋“ฑ
    3. ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋ฐ”๊ฟ”๋ณด์„ธ์š”! ๋ฐฐ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค
  • ๋ชจ๋“  Ansible ์—ญํ• ์— ๋Œ€ํ•ด ๋ถ„์ž ๋‹จ์œ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ(100๊ฐœ ์ด์ƒ)๋ฅผ ์ค€๋น„ํ•œ ํ›„ ์•ฝ 70000๊ฐœ์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ณ ์น˜๋Š” ๋ฐ ๋ช‡ ๋‹ฌ์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค."์Šคํƒ€ํŠธ์—…"๋ถ€ํ„ฐ XNUMX๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„๊นŒ์ง€. Linux ์ธํ”„๋ผ์˜ ์„ฑ์žฅ์„ ์ถ”์ ํ•œ ๋ฐฉ๋ฒ•

์šฐ๋ฆฌ์˜ ๊ตฌํ˜„

๋”ฐ๋ผ์„œ Ansible ์—ญํ• ์ด ์ค€๋น„๋˜๊ณ  ํ…œํ”Œ๋ฆฟํ™”๋˜์—ˆ์œผ๋ฉฐ Linter์— ์˜ํ•ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด gits๋„ ์–ด๋””์—์„œ๋‚˜ ์ž๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์–‘ํ•œ ๋ถ€๋ฌธ์— ๋Œ€ํ•œ ์•ˆ์ •์ ์ธ ์ฝ”๋“œ ์ „๋‹ฌ ๋ฌธ์ œ๋Š” ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์Šคํฌ๋ฆฝํŠธ์™€ ๋™๊ธฐํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"์Šคํƒ€ํŠธ์—…"๋ถ€ํ„ฐ XNUMX๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์ˆ˜์ฒœ ๋Œ€์˜ ์„œ๋ฒ„๊นŒ์ง€. Linux ์ธํ”„๋ผ์˜ ์„ฑ์žฅ์„ ์ถ”์ ํ•œ ๋ฐฉ๋ฒ•

๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋ฉด CI๊ฐ€ ์‹œ์ž‘๋˜๊ณ , ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์—ญํ• ์ด ๋กค์•„์›ƒ๋˜๊ณ , ๋ถ„์ž์— ์˜ํ•ด ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๋ฉด ์ฝ”๋“œ๋Š” prod ๋ถ„๊ธฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ธฐ๊ณ„์˜ ๊ธฐ์กด ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์˜ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ผ์ข…์˜ ์Šคํ† ํผ์ž…๋‹ˆ๋‹ค. ์ธํ”„๋ผ๊ฐ€ ๊ฑฐ๋Œ€ํ•ด์ง€๋ฉด ๋Œ€์ˆ˜์˜ ๋ฒ•์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์ด ๋ฌดํ•ดํ•˜๋‹ค๊ณ  ํ™•์‹ ํ•˜๋”๋ผ๋„ ์‹ฌ๊ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ƒ์„ฑ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ Python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. CI ansible์˜ ๊ฒฝ์šฐ:

- name: create1.yml - Create a VM from a template
  vmware_guest:
    hostname: "{{datacenter}}".domain.ru
    username: "{{ username_vc }}"
    password: "{{ password_vc }}"
    validate_certs: no
    cluster: "{{cluster}}"
    datacenter: "{{datacenter}}"
    name: "{{ name }}"
    state: poweredon
    folder: "/{{folder}}"
    template: "{{template}}"
    customization:
      hostname: "{{ name }}"
      domain: domain.ru
      dns_servers:
        - "{{ ipa1_dns }}"
        - "{{ ipa2_dns }}"
    networks:
      - name: "{{ network }}"
        type: static
        ip: "{{ip}}"
        netmask: "{{netmask}}"
        gateway: "{{gateway}}"
        wake_on_lan: True
        start_connected: True
        allow_guest_control: True
    wait_for_ip_address: yes
    disk:
      - size_gb: 1
        type: thin
        datastore: "{{datastore}}"
      - size_gb: 20
        type: thin
        datastore: "{{datastore}}"

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์˜จ ๊ฒƒ์ด๋ฉฐ ์‹œ์Šคํ…œ์€ ๊ณ„์†ํ•ด์„œ ์‚ด์•„ ์žˆ๊ณ  ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ ์„ค์ •์„ ์œ„ํ•œ 17๊ฐœ์˜ Ansible ์—ญํ• . ๊ฐ ์—ญํ• ์€ ๋ณ„๋„์˜ ๋…ผ๋ฆฌ์  ์ž‘์—…(๋กœ๊น…, ๊ฐ์‚ฌ, ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋ถ€์—ฌ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ)์„ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—ญํ•  ํ…Œ์ŠคํŠธ. ๋ถ„์ž + ํ…Œ์ŠคํŠธ์ธํ”„๋ผ.
  • ์ž์ฒด ๊ฐœ๋ฐœ: CMDB + Orchestrator.
  • ์„œ๋ฒ„ ์ƒ์„ฑ ์‹œ๊ฐ„์€ ์ตœ๋Œ€ 30๋ถ„์ด๋ฉฐ ์ž๋™ํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ž‘์—… ๋Œ€๊ธฐ์—ด๊ณผ ์‹ค์งˆ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.
  • ํ”Œ๋ ˆ์ด๋ถ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, ๊ฐ€์ƒํ™” ์š”์†Œ ๋“ฑ ๋ชจ๋“  ์„ธ๊ทธ๋จผํŠธ์˜ ์ธํ”„๋ผ ์ƒํƒœ/์ด๋ฆ„์ด ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • ํ‘œ์ค€๊ณผ์˜ ๋ถˆ์ผ์น˜์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ ์ƒ์„ฑ์„ ํ†ตํ•ด ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋งค์ผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ด์•ผ๊ธฐ๊ฐ€ ์—ฌํ–‰์„ ์‹œ์ž‘ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์–ด๋–ค ์ž๋™ํ™” ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์‹œ๋‚˜์š”?

์ถœ์ฒ˜ : habr.com