빠른 시작: AzAPI Terraform 공급자를 사용하여 첫 번째 Azure 리소스 배포
다음 Terraform 및 Terraform 공급자 버전으로 테스트된 문서:
Terraform은 클라우드 인프라의 정의, 프리뷰 및 배포를 사용합니다. Terraform을 사용하는 경우 HCL 구문를 사용하여 구성 파일을 만듭니다. HCL 구문을 사용하면 클라우드 공급자(예: Azure) 그리고 클라우드 인프라를 구성하는 요소를 지정할 수 있습니다. 구성 파일을 만든 후 배포되기 전에 인프라 변경을 미리 볼 수 있는 실행 계획를 만듭니다. 변경 내용을 확인 한 후에는 실행 계획을 적용하여 인프라를 배포합니다.
이 문서에서는 AzAPI Terraform 공급자를 사용하여 현재 AzureRM 공급자가 지원하지 않는 Azure 서비스를 관리하는 방법을 알아봅니다. Azure azapi_resource
Lab Services 계정과 랩을 관리하는 데 사용됩니다.
- AzureRM 및 AzAPI 공급자를 정의하고 구성합니다.
- AzureRM 공급자를 사용하여 Azure 리소스 그룹 만들기
- AzureRM 공급자를 사용하여 구독에 "Microsoft.LabServices" 공급자 등록
- AzAPI 공급자를 사용하여 Azure Lab Services 리소스 만들기
참고 항목
이 문서의 예제 코드는 Azure Terraform GitHub 리포지토리에 있습니다.
필수 조건
- Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
Terraform 구성: 아직 구성하지 않은 경우 다음 옵션 중 하나를 사용하여 Terraform을 구성합니다.
Terraform 코드 구현
샘플 Terraform 코드를 테스트할 디렉터리를 만들고, 이를 현재 디렉터리로 만듭니다.
providers.tf
라는 파일을 만들고 다음 코드를 삽입합니다.terraform { required_providers { azapi = { source = "azure/azapi" version = "=0.1.0" } azurerm = { source = "hashicorp/azurerm" version = "=3.0.2" } } } provider "azapi" { default_location = "eastus" default_tags = { team = "Azure deployments" } } provider "azurerm" { features {} }
main.tf
라는 파일을 만들고 다음 코드를 삽입합니다.resource "azurerm_resource_group" "qs101" { name = "rg-qs101" location = "westus2" }
main-generic.tf
라는 파일을 만들고 다음 코드를 삽입합니다.# Provision a Lab Service Account and a Lab that are in public preview resource "azapi_resource" "qs101-account" { type = "Microsoft.LabServices/labaccounts@2018-10-15" name = "qs101LabAccount" parent_id = azurerm_resource_group.qs101.id body = jsonencode({ properties = { enabledRegionSelection = false } }) } resource "azapi_resource" "qs101-lab" { type = "Microsoft.LabServices/labaccounts/labs@2018-10-15" name = "qs101Lab" parent_id = azapi_resource.qs101-account.id body = jsonencode({ properties = { maxUsersInLab = 10 userAccessMode = "Restricted" } }) }
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
를 호출합니다.
결과 확인
- terraform 적용의 결과로 키가 나열되었는지 확인합니다.
리소스 정리
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을 사용할 때 일반적인 문제 해결