이 문서에서는 Terraform을 사용하여 Azure Stream Analytics 작업을 만드는 방법을 보여 줍니다. 작업을 만든 후에는 배포의 유효성을 검사합니다.
Terraform 을 사용하면 클라우드 인프라의 정의, 미리 보기 및 배포가 가능합니다. Terraform을 사용하는 경우 HCL 구문를 사용하여 구성 파일을 만듭니다. HCL 구문을 사용하면 클라우드 공급자(예: Azure)와 클라우드 인프라를 구성하는 요소를 지정할 수 있습니다. 구성 파일을 만든 후 배포되기 전에 인프라 변경을 미리 볼 수 있는 실행 계획를 만듭니다. 변경 내용을 확인하면 실행 계획을 적용하여 인프라를 배포합니다.
이 문서에서는 다음 방법을 알아봅니다.
- random_pet 사용하여 Azure 리소스 그룹 이름에 대한 임의 값을 만듭니다.
- azurerm_resource_group 사용하여 Azure 리소스 그룹을 만듭니다.
- random_pet 사용하여 Azure Stream Analytics 작업 이름에 대한 임의 값을 만듭니다.
- azurerm_stream_analytics_job 사용하여 Azure Stream Analytics 작업을 만듭니다.
필수 조건
Terraform 코드 구현
비고
이 문서의 샘플 코드는 Azure Terraform GitHub 리포지토리에 있습니다. Terraform의 현재 및 이전 버전의 테스트 결과가 포함된 로그 파일을 볼 수 있습니다.
Terraform을 사용하여 Azure 리소스를 관리하는 방법을 보여 주는 추가 문서 및 샘플 코드를 참조하세요.
샘플 Terraform 코드를 테스트하고 실행할 디렉터리를 생성한 후, 그것을 현재 디렉터리로 만드세요.
providers.tf라는 파일을 만들고 다음 코드를 삽입합니다.terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }main.tf라는 파일을 만들고 다음 코드를 삽입합니다.resource "random_pet" "rg_name" { prefix = "rg" } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_pet" "stream_analytics_job_name" { prefix = "job" } resource "azurerm_stream_analytics_job" "job" { name = random_pet.stream_analytics_job_name.id resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location streaming_units = var.number_of_streaming_units events_out_of_order_max_delay_in_seconds = 0 events_late_arrival_max_delay_in_seconds = 5 data_locale = "en-US" events_out_of_order_policy = "Adjust" output_error_policy = "Stop" transformation_query = <<QUERY SELECT * INTO [YourOutputAlias] FROM [YourInputAlias] QUERY }variables.tf라는 파일을 만들고 다음 코드를 삽입합니다.variable "resource_group_location" { type = string description = "Location for the resources." default = "eastus" } variable "number_of_streaming_units" { type = number description = "Number of streaming units." default = 1 validation { condition = contains([1, 3, 6, 12, 18, 24, 30, 36, 42, 48], var.number_of_streaming_units) error_message = "Invalid value for: number_of_streaming_units. The value should be one of the following: 1, 3, 6, 12, 18, 24, 30, 36, 42, 48." } }outputs.tf라는 파일을 만들고 다음 코드를 삽입합니다.output "resource_group_name" { value = azurerm_resource_group.rg.name } output "stream_analytics_job_name" { value = azurerm_stream_analytics_job.job.name }
Terraform 설정을 시작합니다.
terraform init를 실행하여 Terraform 배포를 초기화합니다. 이 명령은 Azure 리소스를 관리하는 데 필요한 Azure 공급자를 다운로드합니다.
terraform init -upgrade
주요 정보:
-
-upgrade매개 변수는 필요한 공급자 플러그 인을 구성의 버전 제약 조건을 준수하는 최신 버전으로 업그레이드합니다.
Terraform 실행 계획 만들기
terraform plan을 실행하여 실행 계획을 만듭니다.
terraform plan -out main.tfplan
주요 정보:
-
terraform plan명령은 실행 계획을 만들지만 실행하지는 않습니다. 대신 구성 파일에 지정된 구성을 만드는 데 필요한 작업을 결정합니다. 이 패턴을 사용하면 실제 리소스를 변경하기 전에 실행 계획이 예상과 일치하는지 확인할 수 있습니다. - 선택 사항인
-out매개 변수를 사용하여 계획의 출력 파일을 지정할 수 있습니다.-out매개 변수를 사용하면 검토한 계획이 정확하게 적용됩니다.
Terraform 실행 계획 적용
terraform apply 명령어를 실행하여 실행 계획을 클라우드 인프라에 적용합니다.
terraform apply main.tfplan
주요 정보:
- 예시
terraform apply명령은 이전에terraform plan -out main.tfplan를 실행했다고 가정합니다. -
-out매개 변수에 다른 파일 이름을 지정한 경우terraform apply에 대한 호출에서 동일한 파일 이름을 사용합니다. -
-out매개 변수를 사용하지 않은 경우 매개 변수 없이terraform apply를 호출합니다.
결과 확인
Azure 리소스 그룹 이름을 가져옵니다.
resource_group_name=$(terraform output -raw resource_group_name)새 Azure Stream Analytics 작업 이름을 가져옵니다.
stream_analytics_job_name=$(terraform output -raw stream_analytics_job_name)az stream-analytics 작업 쇼를 실행하여 작업에 대한 정보를 표시합니다.
az stream-analytics job show \ --resource-group $resource_group_name \ --job-name $stream_analytics_job_name
자원을 정리하세요
Terraform을 통해 만든 리소스가 더 이상 필요하지 않은 경우 다음 단계를 수행합니다.
terraform 플랜을 실행하고
destroy플래그를 지정합니다.terraform plan -destroy -out main.destroy.tfplan주요 정보:
-
terraform plan명령은 실행 계획을 만들지만 실행하지는 않습니다. 대신 구성 파일에 지정된 구성을 만드는 데 필요한 작업을 결정합니다. 이 패턴을 사용하면 실제 리소스를 변경하기 전에 실행 계획이 예상과 일치하는지 확인할 수 있습니다. - 선택 사항인
-out매개 변수를 사용하여 계획의 출력 파일을 지정할 수 있습니다.-out매개 변수를 사용하면 검토한 계획이 정확하게 적용됩니다.
-
terraform apply를 실행하여 실행 계획을 적용합니다.
terraform apply main.destroy.tfplan
Azure에서 Terraform 문제 해결
Azure에서 Terraform을 사용할 때 일반적인 문제 해결