배포 실행 조건 설정하기
배포 실행 조건 설정하기 (Set conditions for deployment runs)
배포 그룹을 사용해 배포 실행을 자동으로 승인하는 오케스트레이션 규칙을 만드는 방법을 알아봐요. 이를 통해 배포를 대규모로 관리할 수 있어요.
출처: 문서
본문
프리미엄 티어: 배포 그룹용 오케스트레이션 규칙 실행은 HCP Terraform Plus 에디션에서 사용할 수 있어요. 자세한 내용은 HCP Terraform 가격을 참고하세요.
배포 그룹 만들기 (Create deployment groups)
배포 구성 파일에서 배포 그룹을 만들어 배포 실행을 자동 승인하게 하는 규칙을 정의할 수 있어요.
배포에 대해 그룹을 명시적으로 정의하지 않으면 테라폼이 자동으로 그 배포와 연관된 기본 배포 그룹을 만들어요. 기본 배포 그룹에는 사용자 지정 규칙을 정의할 수 없어요.
참고: 배포 그룹은 현재 그룹당 하나의 배포만 지원해요.
새 그룹을 만들려면 배포 구성에 deployment_group 블록을 추가해요.
# deployments.tfdeploy.hcl
deployment_group "staging_group" {
# ...
}
배포 그룹은 그 그룹이 적용하는 규칙을 정의해야 해요.
deployment_auto_approve 규칙은 특정 유형의 plan이 수동 개입 없이 진행되길 원할 때 유용해요. 예를 들어 Stacks는 empty_plan이라는 기본 자동 승인 규칙이 있는데, 변경 사항이 없는 plan을 자동으로 승인해요.
deployment_auto_approve 블록을 사용해 설정한 조건이 충족되면 배포 plan을 자동으로 승인하는 자동 승인 규칙을 정의할 수 있어요. 다음 예제에서 no_changes 규칙은 변경 사항이 없으면 배포 plan을 자동 승인해요.
# deployments.tfdeploy.hcl
deployment_auto_approve "no_changes" {
check {
condition = context.plan.changes.total == 0
reason = "Plan contains too many changes for automatic approval."
}
}
deployment_auto_approve 블록의 condition 인자는 현재 배포 실행의 context에 접근할 수 있어요. context에 대해 더 알아보려면 deployment_auto_approve 레퍼런스를 참고하세요.
자동 승인 규칙을 정의한 뒤에는 auto_approve_checks 인자를 사용해 그 규칙을 배포 그룹에 추가해요. 다음 예제에서 staging_group 배포 그룹은 no_changes 규칙을 적용해요.
# deployments.tfdeploy.hcl
deployment_auto_approve "no_changes" {
check {
condition = context.plan.changes.total == 0
reason = "Plan contains too many changes for automatic approval."
}
}
deployment_group "staging_group" {
auto_approve_checks = [
deployment_auto_approve.no_changes
]
}
배포 그룹에 자동 승인 규칙을 할당한 뒤에는 배포를 그 그룹에 추가할 수 있어요. 다음 예제에서 staging 배포가 staging_group 배포 그룹에 추가돼요.
# deployments.tfdeploy.hcl
deployment_auto_approve "no_changes" {
check {
condition = context.plan.changes.total == 0
reason = "Plan contains too many changes for automatic approval."
}
}
deployment_group "staging_group" {
auto_approve_checks = [
deployment_auto_approve.no_changes
]
}
deployment "staging" {
inputs = {
environment = "production"
region = "us-west-2"
}
deployment_group = deployment_group.staging_group
}
이제 staging 배포는 그 배포의 어떤 리소스도 변경하지 않는 모든 실행을 자동으로 승인해요.
배포 그룹에 여러 자동 승인 규칙을 추가해서 더 정교한 조건을 만들 수도 있어요. 다음 예제는 successful_plans라는 또 다른 자동 승인 규칙을 추가해요.
# deployments.tfdeploy.hcl
deployment_auto_approve "no_changes" {
check {
condition = context.plan.changes.total == 0
reason = "Plan contains too many changes for automatic approval."
}
}
deployment_auto_approve "successful_plans" {
check {
condition = context.success == true
reason = "Operation failed and requires manual intervention."
}
}
deployment_group "staging_group" {
auto_approve_checks = [
deployment_auto_approve.approve_staging,
deployment_auto_approve.successful_plans
]
}
이제 staging_group 배포 그룹은 staging 배포의 실행이 성공적이고 어떤 리소스도 변경하지 않을 때 모두 자동으로 승인해요.
다음 단계
Stack과 배포 구성을 완성했다면, Stack이 HCP Terraform에 의해 배포될 준비가 된 것이에요. HCP Terraform에서 Stack을 만드는 방법은 Stack 만들기를 참고하세요.
더 알아보기 (Learn more)
- 배포 구성 정의 — 배포 구성 작성법.
- Stack 인증 — 배포 프로바이더 인증.
- Stack 간 데이터 전달 — 배포 간 데이터 공유.