ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Terraform] 개요 및 작동 흐름
    terraform 2024. 11. 28. 15:27

     Terraform이란?

     

    • HashiCorp에서 관리하는 오픈소스 IaC 소프트웨어 툴
    • 다양한 클라우드 지원 (AWS, Azure, Google …)
    • HCL (HashiCorp Configuration Language) 언어 기반 파일 작성

     

    Terraform 기본 사용법

     

    Terraform을 이용한 인프라 구축은 보통 아래와 같은 수명 주기(lifecycle)을 가진다.

    • ① .tf 파일 작성 > ② 구축 계획 확인 > ③ 리소스 생성 > ④ 리소스 수정 > ⑤ 리소스 삭제

     

    .tf 파일 작성

     

    Terraform Workflow 중, tf 파일 작성에 대한 내용부터 다뤄본다.

     

    providers.tf

     

    • Terraform으로 생성할 인프라 공급자 정의 ex) Azure, AWS, GCP …
    • 보통, 두 가지 block으로 분류하여 구성한다.

    ① terraform

    • 테라폼 자체 설정 정의
    • 테라폼 버전이나 provider 버전 등을 정의
    • 'required_providers'를 사용하여 필요한 provider 버전과 다운로드 위치 명시 가능

    ② provider

    • 테라폼을 통해 관리할 인프라 공급자(클라우드 플랫폼)을 정의한다 ex) AzureRM, AWS, Google …

     

    main.tf

    • terraform으로 생성할 인프라 리소스 정의
    • 리소스 block으로 구성

    [예시]

    resource “RESOURCE_TYPE” “NAME” { 
      ARGUMENT = VALUE
    }

     

    *RESOUCE_TYPE : 리소스 종류 ex) azurerm_resource_group

    *NAME : 리소스 이름 ex) rg

    *ARGUMENT : 인자/속성

     

     

    variables.tf

    • Terraform 모듈 내에서 사용할 변수 정의
    • 주로 모듈 내 공통으로 사용되는 변수 정의

    [예시]

    variable "variable_name" {
      type        = string
      default     = "default_value“
      description = "Description of the variable”
    }

     

     

    *type : 변수 데이터 유형 ex) string, number, bool, list, map 등

    *default : 변수가 제공되지 않았을 때 사용할 기본값

    *description : 변수에 대한 설명

     

    outputs.tf

    • Terraform에서 생성된 리소스의 속성 및 값을 외부에 노출

    [예시]

    output "output_name" {
      description = "Description of the output"
      value       = <expression>
    }

     

    *output_name : 출력의 이름

    *description : 출력에 대한 설명

    *value : 출력으로 노출할 값이나 표현식

     

    Terraform Workflow

     

    .tf 파일을 다 생성하였다면, 테라폼 명령어를 실행시켜서 리소스를 배포해보자!

     

     

     

    terraform init

     

    • 사용자가 지정한 provider와 version에 맞게 테라폼 라이브러리를 설치하여 현재 경로에서 테라폼을 사용할 수 있도록 설정하는 명령어
    • 'terraform init' 명령어가 실행되면 .terraform 폴더와 .terraform.lock.hcl 파일이 생성됨

     

    terraform validate

    • 앞서 'terraform init' 명령어를 실행한 폴더 내부 구성을 참조하여, 원격 상태 / provider API와 같은 구성 파일의 유효성 검사

     

    terraform plan

    • 실제로 작성한 리소스 이름, 변수 등의 코드 유효성 검증

     

    terraform apply

    • terraform plan 명령어를 통해 확인한 내용을, 실제 인프라로 배포
    • apply 성공 시 terraform.tfstate 파일이 생성되며 배포된 리소스들의 구성 정보가 저장됨 
    • apply 명령어의 여러 옵션

    -auto-approve : 배포 시 확인 과정 생략 (yes 생략)

    -refresh-only : 상태 파일만 업데이트 하고, 실제 리소스는 변경하지 않음

     

    terraform destroy

    • 테라폼으로 배포된 리소스를 모두 삭제
    • 배포 후에 생긴 terraform.tfstate 파일의 모든 리소스가 삭제
    • 리소스가 삭제될 때마다 terraform.tfstate 파일 내용도 삭제
Designed by Tistory.