_์ด ๋ฌธ์ ๋ ์๋ @alanbchristie์์ hashicorp/terraform# 17040 ์ผ๋ก ์ด์์ต๋๋ค. ๊ณต๊ธ์ ๋ถํ ์ ๊ฒฐ๊ณผ๋ก ์ฌ๊ธฐ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋์์ต๋๋ค. ๋ฌธ์ ์ ๋ณธ๋ฌธ์ ์๋์ ์์ต๋๋ค._
terraform destroy
๊ฐ ์คํ๋ ๋ ์์ฑ๋ ๋ก์ปฌ ํ์ผ์ด ๊ทธ๋๋ก ๋จ์ ์๋๋ก local_file
๊ตฌ์ฑ ํญ๋ชฉ์ do_not_destroy
์ธ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๊น? ์ด์ ? ๋๋ ์ฌํ ์ ๊ฑฐ Ansible ์คํฌ๋ฆฝํธ๋ฅผ ์ํ ๋์ ์ฝํ
์ธ ๋ฅผ ์์ฑํ๊ณ ์ด ํ๋ ์ด๋ถ์ ์ํด ๋ก์ปฌ์์ ์์ฑ๋ ํ์ผ์ ์ฝํ
์ธ ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ ์ฉํ ๊ฒ์
๋๋ค.
์ฆ, ์ด ์์ ์ ์ํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด ํ์ฉ๋ฉ๋๊น?
resource "local_file" "cleanup_vars" {
content = "${data.template_file.cleanup_vars.rendered}"
filename = "../../../ansible/aws-cleanup/vars.yml"
do_not_destroy = true
}
์์ ๊ฒฝ์ฐ terraform apply
๊ฐ ๋ค์ ์คํ๋๋ฉด ๊ธฐ์กด ํ์ผ์ ๋ฎ์ด์ฐ๋ ๊ฒ์ด ์๋ฒฝํฉ๋๋ค.
Terraform v0.11.1
data "template_file" "cleanup_vars" {
template = "${file("../../../ansible/aws-cleanup/vars.yml.tpl")}"
vars {
aws_region = "${var.aws_region}"
}
}
resource "local_file" "cleanup_vars" {
content = "${data.template_file.cleanup_vars.rendered}"
filename = "../../../ansible/aws-cleanup/vars.yml"
}
ํด๋น ์์
ํด๋น ์์
ํด๋น ์์
ํด๋น ์์
ํด๋น ์์
ํด๋น ์์
ํด๋น ์์
์๋ ํ์ธ์ @alanbchristie์ ๋๋ค! ์ด ๊ธฐ๋ฅ ์์ฒญ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์๋ต์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค.
HashiCorp์ Terraform ํ์ ๋ค๋ฅธ ๊ณณ์ ์ง์คํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊น์ด ์์ผ ๋ด์ ์ด ์์ ์ ์ํํ ์ ์์ง๋ง ๊ทํ ๋๋ ๋ค๋ฅธ ์ฌ๋์ด ๊ตฌํํ ์๊ฐ๊ณผ ๋๊ธฐ๊ฐ ์๋ค๋ฉด ํ ๋ฆฌํ์คํธ๋ฅผ ๊ฒํ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
Terraform์ ์ฌ์ฉํ์ฌ ์์ฑํ์ง๋ง ์ ์ ํ ๊ด๋ฆฌ๋ฅผ ๋ค๋ฅธ ์์คํ
์ผ๋ก ๋๊ธฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๋ฆฌ์์ค์ ๋ํด ์ด์ ๊ฐ์ ์ต์
์ ๋ํ ๋ช ๊ฐ์ง ์ ๋ก๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ด๋ฆ์ verb_on_destroy
์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ "๋์ฌ"๋ ํด๋น ๋ฆฌ์์ค์ ์ ํฉํ ์ฉ์ด์
๋๋ค. ์ด ์ํฉ์์๋ ์ธ์์ ์ด๋ฆ์ delete_on_destroy
๋ก ์ง์ ํ๊ณ ๊ธฐ๋ณธ๊ฐ์ true
๋ก ์ง์ ํ ๋ค์ ๋ช
์์ ๊ตฌ์ฑ์ delete_on_destroy = false
๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ nomad_job
deregister_on_destroy
์ธ์์ ๊ฐ์ ๋ค๋ฅธ ์ ์ฌํ ๊ธฐ์กด ๊ธฐ๋ฅ๊ณผ ์ผ์นํฉ๋๋ค.
(์ฌ๊ธฐ์ *_on_destroy
์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ด ์ปจํ
์คํธ์์ "ํ๊ดด"๊ฐ Terraform์ ์์
์ด๋ฏ๋ก ๋์ ์์คํ
์์ ๋ค๋ฅธ ์์
์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์
๋๋ค. do_not_destroy
๋ผ๊ณ ํ๋ ๊ฒ์ ์ค์ ์ดํ ํผ๋๋ ์ ์์ต๋๋ค. ์ค์ ๋ก Terraform์ด ๋ฆฌ์์ค ์ธ์คํด์ค ์์ฒด๋ฅผ ํ๊ดดํ๋ ๊ฒ์ ๋ฐฉ์งํ์ง๋ ์์ต๋๋ค. ๋์ Terraform์ด ๋ฆฌ์์ค ์ธ์คํด์ค๋ฅผ ํ๊ดดํ _๋_ ์ทจํ๋ ์์
์ ์กฐ์ ํฉ๋๋ค.)
@appparentlymart #10์์ ํด๊ฒฐ์ ์๋ํ์ง๋ง ํผ๋๋ฐฑ์ ๋ฐ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์๋
ํ์ธ์,
@alanbchristie์ ๋์ผํ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๋์ผํ ๋ฌธ์ . ์ด ํฐ์ผ์ ๊ดํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
HashiCorp ์ ๊ณต์
์ฒด์ ๋ํ ๋ถ๋ฅ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ๋ ๋์ @abn ์ ๊ธฐ๋ค๋ ค ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ ์์ธํ ์๊ณ ์ถ์ต๋๋ค. terraform destroy
๋ฅผ ํธ์ถํ์ง๋ง ์ด ๋ฆฌ์์ค๋ฅผ ๋ณด์กดํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ํ๊ดดํ๋ ค๋ ์ถ๊ฐ ์ข
๋ฅ์ ๋ฆฌ์์ค๊ฐ ํฌํจ๋ ๋ ํฐ ๊ตฌ์ฑ์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค์ ๋จ๊ณ์ ๊ตฌ์ฑ์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ ์ ์์ต๋๊น?
@kmoe ์์งํ ๋งํด์ ์๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๋ด ๊ธฐ์ต์ ์ฝ๊ฐ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ช ์์ ์ ์ ์๋ฏ์ด ์ด ๋ฌธ์ ๋ก ์ด์ด์ง๋ ํน์ ์ฌ๋ก๋ ์ธ๋ถ ์ ์ฉ ํ ์์ฑ๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํด์ผ ํ๋ ํ ํฐ ๋ฐ/๋๋ ๊ตฌ์ฑ์ ์์ฑํ๋ AWS์์ ๋ช ๊ฐ์ง ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๊ดด ํ ๊ฐ๋ฅํ ํ๋ ์ด๋ถ์ ์ฌ์ฉํ์ฌ ์ ๋ฆฌํด์ผ ํ๋ tf ์ํ๊ฐ ํธ์ถ๋์์ต๋๋ค. ๊ฐ๋จํ ์๊ตฌ ์ฌํญ์ ์์ฑ๋ ํ์ผ์ ์ญ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉํ ๋ค์ํ ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง
์ฌ์ ํ ์ฌ๊ธฐ์ ํ์ํฉ๋๋ค.
๋๋ ์ฌ์ ํ ์ด ๋ฌธ์ ์ ๊ด์ฌ์ด ์๋ค๊ณ ๋งํ๊ณ ์ถ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ๋์ ๋ฌธ์ ์ ์์ ๋ถ๋ถ์ ๋์ ์๋ ๊ฒ์ฒ๋ผ Ansible ์ ์ปจํธ๋กค๋ฌ๋ก ์ฌ์ฉํ๋ฏ๋ก ์ธํ๋ผ๊ฐ ํ๋ก๋น์ ๋๋๋ฉด Terraform ์ธ๋ถ๋ก ํ์ผ์ ๋ณต์ฌํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ destroy๋ฅผ ํธ์ถํ ํ ์ ์ด๊ฐ ๋ด Ansible ํ๋ ์ด๋ถ์ผ๋ก ๋ค์ ์ ํ๋๋ฉด ์ญ์ ์ ํ์ผ์ด ์๊ณ ํ์ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
2020๋
์ ์ด์ ์ง๋ฌธ๊ณผ ๊ด๋ จํ์ฌ ์ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๋ฌํ ํ์ผ์ ๋ณด๊ดํ๊ณ ์ถ์ดํ ๊น์? ๋ค๋ฅธ ๋ฆฌ์์ค์ ๋ฌ๋ฆฌ "๋ก์ปฌ" ๋ฆฌ์์ค๋ผ๋ ์ฌ์ค์ ์ผ๋ฐ์ ์ผ๋ก ์ธํ๋ผ ๋ด์์ ์ค์ํ ์ญํ ์ ํ์ง ์๋๋ค๋ ๊ฒ์ ์์ํด์ผ ํฉ๋๋ค ... ๊ฒฐ๊ตญ "๋ก์ปฌ"์
๋๋ค(๊ทธ๋ฆฌ๊ณ apply
๋ฅผ ์คํํ ๋ ์ด์จ๋ ๋ค์ ์์ฑ๋ฉ๋๋ค)
์ด์จ๋ - ์ธ๋ถ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ์ฝ๋ฉํ๋ ๊ฒ์ด ๋ ์์ฐ์ ์ด์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ @alanbchristie์ ๋๋ค! ์ด ๊ธฐ๋ฅ ์์ฒญ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์๋ต์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค.
HashiCorp์ Terraform ํ์ ๋ค๋ฅธ ๊ณณ์ ์ง์คํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊น์ด ์์ผ ๋ด์ ์ด ์์ ์ ์ํํ ์ ์์ง๋ง ๊ทํ ๋๋ ๋ค๋ฅธ ์ฌ๋์ด ๊ตฌํํ ์๊ฐ๊ณผ ๋๊ธฐ๊ฐ ์๋ค๋ฉด ํ ๋ฆฌํ์คํธ๋ฅผ ๊ฒํ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
Terraform์ ์ฌ์ฉํ์ฌ ์์ฑํ์ง๋ง ์ ์ ํ ๊ด๋ฆฌ๋ฅผ ๋ค๋ฅธ ์์คํ ์ผ๋ก ๋๊ธฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๋ฆฌ์์ค์ ๋ํด ์ด์ ๊ฐ์ ์ต์ ์ ๋ํ ๋ช ๊ฐ์ง ์ ๋ก๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ด๋ฆ์
verb_on_destroy
์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ "๋์ฌ"๋ ํด๋น ๋ฆฌ์์ค์ ์ ํฉํ ์ฉ์ด์ ๋๋ค. ์ด ์ํฉ์์๋ ์ธ์์ ์ด๋ฆ์delete_on_destroy
๋ก ์ง์ ํ๊ณ ๊ธฐ๋ณธ๊ฐ์true
๋ก ์ง์ ํ ๋ค์ ๋ช ์์ ๊ตฌ์ฑ์delete_on_destroy = false
๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋nomad_job
deregister_on_destroy
์ธ์์ ๊ฐ์ ๋ค๋ฅธ ์ ์ฌํ ๊ธฐ์กด ๊ธฐ๋ฅ๊ณผ ์ผ์นํฉ๋๋ค.(์ฌ๊ธฐ์
*_on_destroy
์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ด ์ปจํ ์คํธ์์ "ํ๊ดด"๊ฐ Terraform์ ์์ ์ด๋ฏ๋ก ๋์ ์์คํ ์์ ๋ค๋ฅธ ์์ ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.do_not_destroy
๋ผ๊ณ ํ๋ ๊ฒ์ ์ค์ ์ดํ ํผ๋๋ ์ ์์ต๋๋ค. ์ค์ ๋ก Terraform์ด ๋ฆฌ์์ค ์ธ์คํด์ค ์์ฒด๋ฅผ ํ๊ดดํ๋ ๊ฒ์ ๋ฐฉ์งํ์ง๋ ์์ต๋๋ค. ๋์ Terraform์ด ๋ฆฌ์์ค ์ธ์คํด์ค๋ฅผ ํ๊ดดํ _๋_ ์ทจํ๋ ์์ ์ ์กฐ์ ํฉ๋๋ค.)