티스토리 뷰
테라폼으로 여러 모듈을 관리하고 있는 상황에서 특정 모듈의 변화만 반영시키고 싶은 경우가 있습니다. 예를 들어, main.tf 파일에 너무 많은 module이 있어서 plan 명령 한 번 읽히는데 분 단위로 걸린다거나, 임의로 콘솔에서 리소스의 값을 변경해 둔 상태라서 terraform apply가 됐을 때 콘솔의 값이 덮어써지면 안 되는 경우입니다. 사실 둘 다 일반적인 경우가 아니긴 해요. 전자는 더 작은 단위로 관리하는 게 맞고 후자는 임시라도 관리를 위해 테라폼으로 값을 수정하는 게 맞을 겁니다. 아무튼, 필연적으로 특정 모듈만 plan 혹은 apply 해야 하는 경우가 옵니다. 이럴 때 사용하는 옵션이 target입니다.
$ terraform plan --help
(생략)
-target=resource Limit the planning operation to only the given module,
resource, or resource instance and all of its
dependencies. You can use this option multiple times to
include more than one object. This is for exceptional
use only.
(생략)
실제 사용은 아래와 같습니다. -target 을 적고 뒤에 모듈 이름을 써주시면 됩니다.
$ terraform plan -target=module.write_your_module_name
예를 들어, 아래와 같은 모듈이 있다고 가정해 보시죠.
module "my_sqs" {
source = "../modules/aws_sqs"
sqs_name = "my_queue"
}
이럴 때는 아래와 같이 target을 써주면 됩니다.
$ terraform plan -target=module.my_sqs
만약 모듈 여러 개를 동시에 수정해야 한다면 target을 반복해서 써주시면 됩니다.
$ terraform plan -target=module.my_sqs -target=module.my_ec2
간단하고 기본적이지만 이런 옵션을 알아두면 필연적으로 필요할 때 도움이 되실 겁니다. 빌드 시간도 줄이고, 콘솔이나 다른 곳에서 임시로 수정된 다른 모듈이 배포 시에 영향받지 않도록 target을 지정해 보시길 바랍니다. :)
'개발 > IaC' 카테고리의 다른 글
| EKS에 HashiCorp Vault 설치 (0) | 2024.10.22 |
|---|---|
| Error: could not download chart: no cached repo found (0) | 2024.10.22 |
| [Terraform] AWS CloudFront 인증서 오류 (5) | 2024.03.16 |
| [Terraform] CloudFront에서 website endpoint 사용 (0) | 2024.02.27 |
| [Terraform] Error asking for state migration action: input is disabled (0) | 2023.11.13 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday