terraform에서 중첩 값을 무시 (ignore_change)하는 방법
6029 단어 Terraform
ignore_changes 기본 사용법
terraform에서 특정 항목을 terraform으로 관리하지 않으려면 lifecycle
의 ignore_changes
를 사용할 수 있습니다.
The lifecycle Meta-Argument - Configuration Language - Terraform by HashiCorp
문서로부터의 인용입니다만, 이것이 기본적인 설정의 방법이 됩니다.
resource "aws_instance" "example" {
# ...
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
tags,
]
}
}
중첩의 경우
그렇다면 중첩 된 값의 경우 어떻게해야합니까?
예를 들어,
resource "aws_eip" "test" {
tags = {
test = "testValue"
}
}
tags.test
를 ignore 하고 싶은 경우입니다.
이것은 문서에 설명되어 있으며,
The arguments are the relative address of the attributes in the resource. Map and list elements can be referenced using index notation, like tags["Name"] and list[0] respectively.
resource "aws_eip" "test" {
tags = {
test = "testValue"
}
lifecycle {
ignore_changes = [
tags["test"],
]
}
}
에서 ignore됩니다.
중첩의 경우 함정
그래서, 여기부터가 본제입니다만, ignore_change
하고 싶은 장면에서 생각할 수 있는 것이, 먼저 콘솔로부터 수동으로 값을 설정한 경우입니다.
구체적인 예를 들자면, 화면에서 ↓처럼 tag를 새롭게 추가하고,
terraform에서는 이렇게 되어 있을 때입니다.
resource "aws_eip" "test" {
tags = {
Name = "名前"
}
}
이 상태에서, terraform plan
를 하면(자), 아직 ignore 설정을 하고 있지 않기 때문에, 차분이 표시됩니다.
~ tags = {
"Name" = "名前"
- "test" = "testValue" -> null
}
}
그래서 ignore_change를 추가합니다.
resource "aws_eip" "test" {
tags = {
Name = "名前"
}
lifecycle {
ignore_changes = [
tags["test"], // 追加
]
}
}
확실히 보이는 것 같습니다만, 실은 이것으로는 ignore_changes
가 잘 다루지 않고, 아직 차이가 있다고 인식되어 버립니다.
정답은 이렇습니다.
resource "aws_eip" "test" {
tags = {
Name = "名前"
test = "" // これが必要
}
lifecycle {
ignore_changes = [
tags["test"],
]
}
}
ignore_changes
로 지정하고 있는 값을, resources에 실제로 써 주어야 합니다. 값 자체는 무시되므로 내용은 무엇이든 좋습니다. key가 (예이면 test
)가 설정되어 있어야합니다.
보충
Terraform v0.13.5
에서 동작 확인했습니다.
Reference
이 문제에 관하여(terraform에서 중첩 값을 무시 (ignore_change)하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/moya_dev/items/b3fc4c8f3242e8bb65f4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
resource "aws_instance" "example" {
# ...
lifecycle {
ignore_changes = [
# Ignore changes to tags, e.g. because a management agent
# updates these based on some ruleset managed elsewhere.
tags,
]
}
}
그렇다면 중첩 된 값의 경우 어떻게해야합니까?
예를 들어,
resource "aws_eip" "test" {
tags = {
test = "testValue"
}
}
tags.test
를 ignore 하고 싶은 경우입니다.이것은 문서에 설명되어 있으며,
The arguments are the relative address of the attributes in the resource. Map and list elements can be referenced using index notation, like tags["Name"] and list[0] respectively.
resource "aws_eip" "test" {
tags = {
test = "testValue"
}
lifecycle {
ignore_changes = [
tags["test"],
]
}
}
에서 ignore됩니다.
중첩의 경우 함정
그래서, 여기부터가 본제입니다만, ignore_change
하고 싶은 장면에서 생각할 수 있는 것이, 먼저 콘솔로부터 수동으로 값을 설정한 경우입니다.
구체적인 예를 들자면, 화면에서 ↓처럼 tag를 새롭게 추가하고,
terraform에서는 이렇게 되어 있을 때입니다.
resource "aws_eip" "test" {
tags = {
Name = "名前"
}
}
이 상태에서, terraform plan
를 하면(자), 아직 ignore 설정을 하고 있지 않기 때문에, 차분이 표시됩니다.
~ tags = {
"Name" = "名前"
- "test" = "testValue" -> null
}
}
그래서 ignore_change를 추가합니다.
resource "aws_eip" "test" {
tags = {
Name = "名前"
}
lifecycle {
ignore_changes = [
tags["test"], // 追加
]
}
}
확실히 보이는 것 같습니다만, 실은 이것으로는 ignore_changes
가 잘 다루지 않고, 아직 차이가 있다고 인식되어 버립니다.
정답은 이렇습니다.
resource "aws_eip" "test" {
tags = {
Name = "名前"
test = "" // これが必要
}
lifecycle {
ignore_changes = [
tags["test"],
]
}
}
ignore_changes
로 지정하고 있는 값을, resources에 실제로 써 주어야 합니다. 값 자체는 무시되므로 내용은 무엇이든 좋습니다. key가 (예이면 test
)가 설정되어 있어야합니다.
보충
Terraform v0.13.5
에서 동작 확인했습니다.
Reference
이 문제에 관하여(terraform에서 중첩 값을 무시 (ignore_change)하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/moya_dev/items/b3fc4c8f3242e8bb65f4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
resource "aws_eip" "test" {
tags = {
Name = "名前"
}
}
~ tags = {
"Name" = "名前"
- "test" = "testValue" -> null
}
}
resource "aws_eip" "test" {
tags = {
Name = "名前"
}
lifecycle {
ignore_changes = [
tags["test"], // 追加
]
}
}
resource "aws_eip" "test" {
tags = {
Name = "名前"
test = "" // これが必要
}
lifecycle {
ignore_changes = [
tags["test"],
]
}
}
Terraform v0.13.5
에서 동작 확인했습니다.
Reference
이 문제에 관하여(terraform에서 중첩 값을 무시 (ignore_change)하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/moya_dev/items/b3fc4c8f3242e8bb65f4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)