[Terraform] workspace

์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ•˜๋‹ค๋ณด๋ฉด, ํ™˜๊ฒฝ๋ณ„๋กœ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ์„ฑํ•ด์•ผํ•  ๊ฒฝ์šฐ๊ฐ€ ๋งค์šฐ ๋งŽ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹ค๋ฌด์—์„œ๋Š” ํ”„๋กœ๋•์…˜ ๋ฒ„์ „๊ณผ ๊ฐœ๋ฐœ ๋ฒ„์ „์„ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ๋ณต์ œํ•ด์„œ ๋™์‹œ์— ๋„์›Œ๋†“๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ธ๋ฐ, ์ด๋Ÿฐ๊ฒƒ๋„ ํ•˜๋‹ค๋ณด๋ฉด ๊ด€๋ฆฌ์— ์†์ด ๊ฝค ๋งŽ์ด ๊ฐ€๊ฒŒ ๋œ๋‹ค.
๊ทธ๋Ÿผ terraform์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ๊ทธ๋ƒฅ prod, dev, stage๋ณ„๋กœ github repository ํ•˜๋‚˜์”ฉ ๋‹ค ํŒŒ์„œ ๋„์›Œ์•ผ ํ• ๊นŒ? ๊ทธ๋ ‡์ง€๋Š” ์•Š๋‹ค.

terraform์€ workspace ๋‹จ์œ„๋ฅผ ํ†ตํ•ด์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.
ํ•˜๋‚˜์˜ terraform ๊ตฌ์„ฑ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ workspace๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ™˜๊ฒฝ์˜ ๋ถ„๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.




๊ธฐ๋ณธ ๋ช…๋ น์–ด

workspace๋Š” terraform cli์˜ workspace ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

list ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

๋ณ„๋‹ค๋ฅธ ์„ค์ •์„ ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋””ํดํŠธ๋งŒ ์žˆ์„ ๊ฒƒ์ด๋‹ค.




workspace ์ถ”๊ฐ€ํ•˜๊ธฐ

prod์™€ dev ๋ฒ„์ „์˜ workspace๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ๋‹ค.
์–ด๋ ต์ง€ ์•Š๋‹ค. workspace new ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

๊ทธ๋Ÿผ ์‹ค์ œ๋กœ ์ƒํƒœ๊ฐ’์— ํ•ด๋‹น workspace๋“ค์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ๊ธฐ๊ณ 

list๋กœ๋„ ์กฐํšŒ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.




workspace ๋ฐฐํฌํ•˜๊ธฐ

workspace๋ฅผ ๊ทธ๋ƒฅ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ”๋กœ ๋œจ๋Š”๊ฑด ์•„๋‹ˆ๋‹ค.
๊ทธ๋ƒฅ ๊ทธ ์ž์ฒด๋กœ๋Š” ํŠน์ • ์ปจํ…์ŠคํŠธ์˜ ์—ญํ• ๋ฐ–์— ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, dev์— ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด dev๋กœ ์ „ํ™˜ํ•œ ๋‹ค์Œ์— apply๋ฅผ ๋•Œ๋ ค์ฃผ๋ฉด ๋œ๋‹ค.

์ฝ”๋“œ๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ์งฐ๋‹ค.
์›Œํฌ์ŠคํŽ˜์ด์Šค ์ปจํ…์ŠคํŠธ๋Š” terraform.workspace๋ผ๋Š” ๊ฐ’์„ ํ†ตํ•ด ์ฃผ์ž…๋œ๋‹ค.
๊ทธ๋Ÿผ ๊ทธ๋ƒฅ ๊ทธ ๊ฐ’์œผ๋กœ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ณ„๋กœ ๋‹ค๋ฅธ ์„ค์ •์„ ์ฃผ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ฌดํŠผ apply๋ฅผ ํ•ด๋ณด๋ฉด

๊ธฐ๋Œ€ํ•œ๋Œ€๋กœ ์ž˜ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๋‹ค.

prod๋„ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, prod๋กœ ๋ฐฐํฌํ•˜๊ณ  apply๋ฅผ ๋‚ ๋ฆฌ๋ฉด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ



์ฐธ์กฐ
https://blog.gruntwork.io/how-to-manage-multiple-environments-with-terraform-using-workspaces-98680d89a03e