우선 간단히 terraform에서 조건문을 쓰는 방법에 대해 알아보겠습니다.
/main.tf
provider "aws" {
region = "ap-northeast-2"
}
/**
* Conditional Expression
* Conditional ? If_True : If_False
*/
variable "is_john" {
type = bool
default = true
}
locals {
message = var.is_john ? "Hello John!" : "Hello!"
}
output "message" {
value = local.message
}
이 코드의 의미는 원래의 프로그래밍 언어와 같습니다. variable인 is_john이 true이면 "Hello John!"이 출력되고, false이면 "Hello!"이 출력되는 코드입니다. 그리고 지역변수로 이 문자열을 저장해서 출력합니다.
다음과 같이 정상작동 하는 것을 보실 수 있습니다.
그리고 is_john이 false라면 Hello만 나오는 것도 완벽합니다.
/main.tf
...
/**
* Count Trick for Conditional Resource
*/
variable "internet_gateway_enabled" {
type = bool
default = true
}
resource "aws_vpc" "this" {
cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "this" {
count = var.internet_gateway_enabled ? 1 : 0
vpc_id = aws_vpc.this.id
}
...
그리고 위 코드는 조건에 따라 aws의 resource를 추가하거나 추가하지 않는 것입니다. 이 때는 count를 통해서 일종의 Trick을 써주면 됩니다. internet_gateway는 사실 VPC에 필요한 존재가 아닐 수도 있기 때문에 이런 설정이 실무에서 필요할 수도 있습니다.
다음과 같이 internet_gateway_enabled가 true면 resource2개를 다 생성하는 것을 보실 수 있습니다. 만약 false로 주게된다면 아래와 같이 기존의 internet_gateway를 삭제하는 것을 보실 수 있습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 상태 저장소(Backend) (0) | 2022.08.01 |
---|---|
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 반복문 (For) (0) | 2022.07.21 |
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL count와 for_each (0) | 2022.07.21 |
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL variable & local & output (0) | 2022.07.21 |
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL module (0) | 2022.07.21 |