본문 바로가기

Cloud/AZURE

Terraform on Azure 정리 (3) - tf 파일과 기본 명령어

Terraform 시작 순서 가이드

- 디렉터리 생성 및 이동 : Terraform 코드(.tf 파일)를 생성할 디렉터리 생성 및 이동

mkdir terraform-sample
cd terraform-sample

 

Terraform에서 사용하는 .tf 파일 

- Main.tf(리소스 정의)는 단순 테스트를 하는데 필수이며, 실제 프로젝트 관리시에는 아래 파일들이 모두 필요.

파일명 용도 코드예제
providers.tf 사용할 Provider 정의
예: azurerm, google, aws 등
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
}

provider "azurerm" {
  features {}
}
variables.tf 입력 변수 선언
사용자 정의 값이나 기본값 설정
variable "location" {
  description = "Azure 리소스를 배포할 지역"
  type        = string
  default     = "eastus"
}
main.tf 핵심 리소스 정의
VM, Subnet, NSG 등 실제 인프라 (vm.tf, subnet.tf 등)
resource "azurerm_virtual_network" "vnet" {
  name                = "my-vnet"
  address_space       = ["10.0.0.0/16"]
  location            = var.location
  resource_group_name = azurerm_resource_group.rg.name
}
outputs.tf 출력값 정의
예: 리소스 ID, public IP 주소 등
output "vnet_name" {
  value = azurerm_virtual_network.vnet.name
}
terraform.tfvars 변수 값 설정 파일
variables.tf에 선언된 변수에 값을 지정할 때 사용
location = "koreacentral"

 

프로젝트 파일 구조 예시

terraform-azure/
├── providers.tf        # azurerm provider 정의
├── variables.tf        # 변수 선언
├── main.tf             # 기본 리소스 정의
├── vm.tf               # VM 관련 리소스 정의
├── network.tf          # VNet, Subnet 등 네트워크 정의
├── outputs.tf          # 결과 출력 정의
├── terraform.tfvars    # 변수 값 지정 파일 (선택)

- Terraform은 .tf 파일을 한 디렉터리 내에서 전부 읽음

 

Terraform 실행 순서

terraform init
# provider 다운로드, 백엔드 초기화, 프로바이더 설치 등

terraform plan
# 어떤 리소스가 만들어질지 확인 (시뮬레이션)

terraform apply
# "yes" 입력하면 Azure에 리소스 그룹이 생성됨

terraform apply --auto-approve
# --auto-approve : 중간에 yes 타이핑 스킵
         
terraform destroy    
# 만든 리소스 삭제

terraform state list
# terraform 상태 파일에 남아 있는 리소스 목록을 출력
# 아무것도 출력되지 않으면 terraform 입장에서 추적 중인 리소스가 없는 상태