Terraform 소개

완료됨

Terraform 오픈 소스 IaC 도구를 사용하면 HCL(HashiCorp Configuration Language)이라는 고급 구성 언어를 사용하여 클라우드 인프라를 정의하고 프로비전할 수 있습니다. Terraform은 인프라의 원하는 상태를 설명하는 구성 파일의 인프라를 코딩합니다. Terraform은 Terraform 공급자를 사용하여 퍼블릭 클라우드, 프라이빗 클라우드 및 SaaS 서비스와 같은 모든 인프라를 관리할 수 있습니다.

Azure 인프라용 Terraform 공급자

여러 Terraform 공급자를 사용하여 Azure 인프라를 관리할 수 있습니다.

  • AzureRM: 가상 머신, 스토리지 계정, 네트워킹 인터페이스 등의 Azure Resource Manager 리소스를 관리합니다.
  • AzureAD: 그룹, 사용자, 서비스 주체, 애플리케이션 등 Microsoft Entra 리소스를 관리합니다.
  • AzureDevOps: 에이전트, 리포지토리, 프로젝트, 파이프라인 및 쿼리와 같은 Azure DevOps 리소스를 관리합니다.
  • AzAPI: Azure Resource Manager API를 사용하여 Azure 리소스를 직접 관리합니다. 이 공급자는 최신 Azure 리소스 관리를 지원하여 AzureRM 공급자를 보완합니다.
  • Azure Stack: 가상 머신, DNS, 가상 네트워크 및 스토리지와 같은 Azure Stack 리소스를 관리합니다.

스토리지 계정 만들기

모든 Terraform 구성에는 provider 블록이 포함되어야 합니다. 다음 HCL 코드는 Azure Resource Manager 공급자(azurerm)를 지정합니다. storageaccountexamplerg라는 Azure 리소스 그룹이 eastus 위치에 정의됩니다. Azure Storage 계정이 리소스 그룹 내에서 생성됩니다. 스토리지 계정 이름은 md5 함수를 통해 생성된 숫자의 처음 24자입니다.

terraform {
  required_version = ">=0.12"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  location = "eastus"
  name     = "storageaccountexamplerg"
}

resource "azurerm_storage_account" "example" {
  name                     = substr(md5(azurerm_resource_group.rg.id), 0, 24)
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  access_tier              = "Hot"
}

Terraform 코드 실행

terraform init를 실행하여 Azure 리소스를 관리하는 데 필요한 Azure 모듈을 다운로드합니다.

terraform init

terraform plan을 실행하여 구성 파일에 지정된 구성을 만드는 데 필요한 작업을 결정합니다. 명령을 실행하면 실행 계획이 생성되지만 해당 계획이 적용되지는 않습니다. 이 패턴을 사용하면 실제 리소스를 변경하기 전에 실행 계획이 예상과 일치하는지 확인할 수 있습니다.

terraform plan -out main.tfplan

실행 계획을 확인한 후 terraform apply를 실행하여 계획을 적용합니다. 이 명령은 정의된 리소스를 만듭니다.

terraform apply main.tfplan

스토리지 계정 확인

Azure Storage 계정을 확인하려면 terraform state show 명령을 사용할 수 있습니다. 이 명령은 지정된 리소스의 현재 상태를 표시합니다.

이 모듈에서 만든 스토리지 계정의 경우 이 명령은 생성된 이름과 함께 스토리지 계정 특성 및 해당 값의 전체 목록을 표시합니다.

terraform state show 'azurerm_storage_account.example'

리소스 정리

이 모듈에서 만든 리소스가 더 이상 필요하지 않은 경우 -destroy 플래그를 사용하여 terraform apply를 실행합니다.

terraform plan -destroy -out main.destroy.tfplan

terraform apply를 실행하여 실행 계획을 적용합니다.

terraform apply main.destroy.tfplan