`deployment_group` 블록 참조

deployment_group 블록 참조 (deployment_group block reference)

deployment_group 블록을 사용해 배포를 관리하고 그 배포에 대한 오케스트레이션 규칙을 추가할 수 있는 그룹을 정의해요. 이 페이지에서는 deployment_group 블록의 구성 모델과 지원 인자를 다룰게요.

출처: 문서

본문

deployment_group 블록을 사용해 배포를 관리하고 그 배포에 대한 오케스트레이션 규칙을 추가할 수 있는 그룹을 정의해요.

배경 (Background)

참고: 배포 그룹은 현재 그룹당 하나의 배포만 지원해요.

deployment_group 블록은 개별 배포가 가입하도록 할당할 수 있는 새 그룹을 정의해요. a deployment 블록의 deployment_group 인자를 사용해 배포를 그룹에 할당할 수 있어요. 배포를 그룹에 할당하지 않으면 Terraform은 그 배포에 대한 기본 배포 그룹을 자동으로 만들어요.

배포 그룹을 사용하면 그룹 안의 배포에 오케스트레이션 규칙을 적용할 수 있어요. 더 알아보려면 배포 실행 조건 설정을 참고해요.

구성 모델 (Configuration model)

deployment_group 블록은 다음 인자를 지원해요:

  • deployment_group "<NAME>" 블록
    • auto_approve_checks 참조 리스트

완전한 구성 (Complete configuration)

사용 가능한 모든 인자는 다음 deployment_group 블록에 정의돼 있어요:

deployment_group "<NAME>" {
  auto_approve_checks = [
    deployment_auto_approve.<NAME>,
    deployment_auto_approve.<NAME>
  ]
}

사양 (Specification)

deployment_group 블록은 다음 구성을 지원해요.

deployment_group "<NAME>"

deployment_group 키워드 뒤의 레이블은 그룹의 이름이며, 같은 배포 구성 파일의 모든 배포 그룹 사이에서 고유해야 해요. 배포 그룹의 이름은 유효한 식별자라면 무엇이든 될 수 있어요.

deployment_group 블록은 다음 인자를 지원해요:

인자 설명 타입 필수?
auto_approve_checks deployment_auto_approve 블록에 대한 참조의 리스트예요. deployment_auto_approve 블록의 모든 검사가 통과하면 이 그룹의 배포에 대한 plan이 자동으로 적용돼요. 참조 리스트 필수

auto_approve_checks

auto_approve_checks 인자는 deployment_auto_approve 블록에 대한 참조의 리스트를 지정해요. Terraform은 각 deployment_auto_approve 블록을 평가해 배포의 plan이 수동 승인 없이 자동으로 적용되는지 결정해요.

deployment_group "<NAME>" {
  auto_approve_checks = [
    deployment_auto_approve.<NAME>
  ]
}

여러 deployment_auto_approve 블록을 참조하면 배포의 plan이 자동으로 적용되려면 모든 검사가 통과해야 해요. deployment_auto_approve 검사가 하나라도 실패하면 plan은 수동 승인이 필요해요.

요약 (Summary)

  • 데이터 타입: 참조 리스트
  • 기본값: 빈 리스트 (자동 승인 없음)
  • 필수: 예

예시 (Examples)

다음 예시는 deployment_group 블록의 일반적인 사용 사례를 보여줘요.

배포와 함께 배포 그룹 사용 (Using deployment groups with deployments)

다음 예시에서 production_group 배포 그룹은 production 배포를 포함해요:

deployment_group "production_group" {
  auto_approve_checks = [
    deployment_auto_approve.no_destroys
  ]
}

deployment "production" {
  inputs = {
    environment = "production"
    instance_count = 5
  }

  deployment_group = deployment_group.production_group
}

각 배포는 하나의 배포 그룹에만 속할 수 있어요. 배포 그룹을 지정하지 않으면 Terraform은 그 배포에 대한 기본 그룹을 자동으로 만들어요.

자동 승인이 있는 기본 배포 그룹 (Fundamental deployment group with auto-approval)

다음 예시에서 web 배포는 production 배포 그룹에 있어요. production 그룹은 no_destroys 규칙을 참조하며, 이 규칙은 리소스를 파괴할 계획이 없으면 plan이 자동으로 적용되게 해요:

deployment_auto_approve "no_destroys" {
  check {
    condition = context.plan.changes.remove == 0
    reason    = "Plan removes ${context.plan.changes.remove} resources."
  }
}

deployment_group "production" {
  auto_approve_checks = [
    deployment_auto_approve.no_destroys
  ]
}

deployment "web" {
  inputs = {
    environment = "production"
    region      = "us-west-2"
  }

  deployment_group = deployment_group.production
}

HCP Terraform은 이제 web 배포에서 리소스를 제거하지 않는 모든 plan을 자동으로 승인해요. plan이 리소스 파괴를 포함하면 수동 승인이 필요해요.

여러 자동 승인 검사 (Multiple auto-approval checks)

다음 예시에서 staging 배포 그룹은 allow_plansapply_staging이라는 두 deployment_auto_approve 블록을 참조해요:

deployment_auto_approve "allow_plans" {
  check {
    condition = context.operation == "plan"
    reason    = "Apply operations need manual approval."
  }
}

deployment_auto_approve "apply_staging" {
  check {
    condition = context.plan.deployment == deployment.staging
    reason = "Automatically applying staging deployment."
  }
}

deployment_group "staging" {
  auto_approve_checks = [
    deployment_auto_approve.no_destroys,
    deployment_auto_approve.cost_limit
  ]
}

deployment "staging" {
  inputs = {
    environment = "staging"
    region      = "us-east-1"
  }

  deployment_group = deployment_group.staging
}

staging 배포 그룹은 이제 staging 배포를 대상으로 하는 계획 실행을 자동 승인해요. 이 검사 중 하나라도 실패하면 plan은 수동 승인이 필요해요.

더 알아보기 (Learn more)