Terraform AzAPI 공급자 개요

AzAPI 공급자는 Azure ARM REST API 위에 있는 얇은 계층입니다. AzAPI 공급자를 사용하면 API 버전을 사용하여 모든 Azure 리소스 유형을 관리할 수 있습니다. 이 공급자는 새 Azure 리소스 및 속성(프라이빗 미리 보기 포함)을 관리할 수 있도록 하여 AzureRM 공급자를 보완합니다.

리소스

업데이트를 요구하지 않고 모든 Azure 리소스 및 기능을 관리할 수 있도록 AzAPI 공급자는 다음과 같은 일반 리소스를 포함합니다.

리소스 이름 설명
azapi_resource 전체 CRUD를 사용하여 Azure(컨트롤 플레인) 리소스(API)를 완전히 관리하는 데 사용됩니다.
   예제 사용 사례:
      새 미리 보기 서비스
      기존 서비스에 추가된 새 기능
      현재 다루지 않는 기존 기능/서비스
azapi_update_resource 전체 CRUD가 없는 리소스 또는 리소스의 일부를 관리하는 데 사용됩니다.
   예제 사용 사례:
      기존 서비스의 새 속성 업데이트
      DNS SOA 레코드와 같이 미리 만든 자식 리소스를 업데이트합니다.

리소스 구성 예제

다음 코드 조각은 AzureRM 공급자에 현재 존재하지 않는 리소스를 구성합니다.

resource "azapi_resource" "publicip" {
  type      = "Microsoft.Network/Customipprefixes@2021-03-01"
  name      = "exfullrange"
  parent_id = azurerm_resource_group.example.id
  location  = "westus2"

  body = jsonencode({
    properties = {
      cidr          = "10.0.0.0/24"
      signedMessage = "Sample Message for WAN"
    }
  })
}

다음 코드 조각은 AzureRM의 기존 리소스에 대한 미리 보기 속성을 구성합니다.

resource "azapi_update_resource" "test" {
  type        = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
  resource_id = azurerm_container_registry.acr.id

  body = jsonencode({
    properties = {
      anonymousPullEnabled = var.bool_anonymous_pull
    }
  })
}

AzAPI 공급자를 사용한 인증

AzAPI 공급자는 AzureRM 공급자와 동일한 인증 방법을 사용하도록 설정합니다. 인증 옵션에 대한 자세한 내용은 Azure에 Terraform 인증을 참조하세요.

AzAPI 공급자 사용의 이점

AzAPI 공급자는 다음과 같은 이점을 제공합니다.

  • 모든 Azure 서비스를 지원합니다.
    • 프라이빗 미리 보기 서비스 및 기능
    • 공개 미리 보기 서비스 및 기능
    • 모든 API 버전
  • 전체 Terraform 상태 파일 충실도
    • 속성 및 값이 상태에 저장됨
  • Swagger에 대한 종속성 없음
  • 일반적이고 일관된 Azure 인증

AzAPI 공급자의 환경 및 수명 주기

이 섹션에서는 AzAPI 공급자를 사용하는 데 도움이 되는 몇 가지 도구에 대해 설명합니다.

VS Code 확장 및 언어 서버

AzAPI VS Code 확장다음과 같은 이점을 통해 풍부한 제작 환경을 제공합니다.

  • IntelliSense
  • 코드 자동 완성
  • 참고
  • 구문 유효성 검사
  • 요약 정보

AzAPI2AzureRM 마이그레이션 도구

AzureRM 공급자는 Azure 리소스를 관리하기 위한 가장 통합된 Terraform 환경을 제공합니다. 따라서 AzAPI 및 AzureRM 공급자의 권장 사용은 다음과 같습니다.

  1. 서비스 또는 기능이 미리 보기 상태인 동안 AzAPI 공급자를 사용합니다.
  2. 서비스가 공식적으로 릴리스되면 AzureRM 공급자를 사용합니다.

AzAPI2AzureRM 도구는 AzAPI 공급자에서 AzureRM 공급자로 마이그레이션할 수 있도록 설계되었습니다.

AzAPI2AzureRM은 AzAPI 리소스를 AzureRM 리소스로 변환하는 프로세스를 자동화하는 오픈 소스 도구입니다.

AzAPI2AzureRM에는 계획 및 마이그레이션의 두 가지 모드가 있습니다.

  • 계획은 마이그레이션할 수 있는 AzAPI 리소스를 표시합니다.
  • AzAPI 리소스를 HCL 파일과 상태 모두에서 AzureRM 리소스로 마이그레이션합니다.

AzAPI2AzureRM은 마이그레이션 후에 Terraform 구성 및 상태가 실제 상태에 맞춰지도록 합니다. 마이그레이션을 완료한 후 실행 terraform plan 하여 업데이트된 상태의 유효성을 검사하여 변경된 내용이 없는지 확인할 수 있습니다.

AzAPI 공급자 사용

  1. VS Code 확장 설치

  2. Terraform 구성에 AzAPI 공급자를 추가합니다.

    terraform {
      required_providers {
        azapi = {
          source  = "Azure/azapi"
        }
      }
    }
    
    provider "azapi" {
      # More information on the authentication methods supported by
      # the AzureRM Provider can be found here:
      # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
    
      # subscription_id = "..."
      # client_id       = "..."
      # client_secret   = "..."
      # tenant_id       = "..."
    }
    
  3. 다음 예제 코드와 같이 하나 이상의 AzAPI 리소스를 선언합니다.

    resource "azapi_resource" "example" {
      name = "example"
      parent_id = data.azurerm_machine_learning_workspace.existing.id
      type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01"
    
      location = "eastus"
      body = jsonencode({
        properties = {
          computeType      = "ComputeInstance"
          disableLocalAuth = true
          properties = {
            vmSize = "STANDARD_NC6"
          }
        }
      })
    }
    
    

다음 단계