[Terraform] lifecycle

lifecycle์€ terraform์—์„œ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์กฐ๊ฑด ์‹คํ–‰์— ์‚ฌ์šฉ๋˜๋Š” ํŠน์ˆ˜ํ•œ ๊ตฌ๋ฌธ์ด๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ lifecycle ๋ธ”๋Ÿญ์„ ์—ด๊ณ  ์„ค์ •ํ•  ๊ฐ’๋“ค์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ignore_changes์ธ๋ฐ

์ด๊ฑด ํŠน์ • ์†์„ฑ๊ฐ’์„ ์ƒ์„ฑ์‹œ์—๋งŒ ์ ์šฉํ•˜๊ณ , ์ดํ›„์—๋Š” ๋ฐ”๋€Œ๋”๋ผ๋„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ฒŒ ๋ฌด์‹œํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

ํŠนํžˆ ์ด๋Ÿฐ blue-green ๊ตฌ์„ฑ์— ์šฉ์ดํ–ˆ๋‹ค.

๋ฆฌ์Šค๋„ˆ๊ฐ€ blue๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ์ง€ green์„ ๊ฐ€๋ฆฌํ‚ฌ์ง€๋Š” ๋ฐฐํฌํ• ๋•Œ๋งˆ๋‹ค ๋‹ฌ๋ผ์ง€๋Š”๋ฐ, ์ด๊ฑธ terraform ์ฝ”๋“œ์—์„œ ๋‹ค ๋ฐ›์•„์ค„ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ignore_changes๋ฅผ ํ†ตํ•ด์„œ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ๊ณ ์ •๋˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

์ด์™ธ์—๋„ create_before_destroy, prevent_destroy, replace_triggered_by ๋“ฑ์˜ ๊ตฌ๋ฌธ์ด ์ œ๊ณต๋˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์€ ๋Œ€๊ฐ• ์ด๋ ‡๋‹ค.

create_before_destroy: true/false ๊ฐ’๋งŒ ๋“ค์–ด๊ฐ„๋‹ค.
์ด๊ฑธ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ˆ˜์ •ํ•ด๋„ ์‚ญ์ œ->์žฌ์ƒ์„ฑ์ด ๋˜๋Š” ๋ฆฌ์†Œ์Šค์ธ ๊ฒฝ์šฐ์— ์žฌ์ƒ์„ฑ์„ ์‚ญ์ œ๋ณด๋‹ค ๋จผ์ € ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

prevent_destroy: true/false
์ด๊ฑธ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ์ด๊ฑธ ์‚ญ์ œํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ ์˜ค๋ฅ˜๋ฅผ ๋„์šฐ๋ฉฐ ์ค‘๋‹จํ•œ๋‹ค. ๋ฏผ๊ฐํ•œ ๋ฆฌ์†Œ์Šค์— ๋‹ฌ๋ฉด ๋œ๋‹ค.

replace_triggered_by: ignore_changes์™€ ๋น„์Šทํ•˜๊ฒŒ ์†์„ฑ ๋ชฉ๋ก์„ ๋ฐฐ์—ด๋กœ ๋ฐ›๋Š”๋‹ค.
์ด๊ฑธ๋กœ ์ฐธ์กฐ๋œ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋ฉด, ๊ทธ๋ƒฅ ์ˆ˜์ •์ด ์•„๋‹ˆ๋ผ ๋ฆฌ์†Œ์Šค ๋‹จ์œ„๋กœ ์‚ญ์ œ-์žฌ์ƒ์„ฑ์„ ํ•ด์„œ ๊ต์ฒดํ•œ๋‹ค.

์‚ฌ์‹ค ignore_changes ๋ง๊ณ ๋Š” ์“ธ์ผ์ด ๋งŽ์ง€๋Š” ์•Š๋‹ค.


์ฐธ์กฐ
https://developer.hashicorp.com/terraform/language/meta-arguments/lifecycle