Skip to Content

Terraform 플랜이란?

HashiCorp 개발한 Terraform은 사용자가 높은 수준의 구성 언어를 사용하여 소프트웨어 인프라를 정의하고 프로비저닝할 수 있도록 해주는 널리 사용되는 IaC(인프라-as-code) 툴입니다. 조직이 클라우드 기반 인프라를 점점 더 많이 도입함에 따라, Terraform은 인프라 리소스의 배포를 관리하고 자동화하는 데 필수적인 요소가 되었습니다. Terraform의 핵심 명령 중 하나는 인프라 변경이 안전하고 예측 가능하며 효율적인지 확인하는 구축 프로세스의 중요한 단계인 테라폼 계획입니다.

이 문서에서는 이 명령, 명령의 기능 및 Terraform 구성에 대한 출력을 해석하는 방법을 자세히 살펴보겠습니다.

Terraform 플랜이란?

테라폼 계획 명령은 Terraform 워크플로우의 중요한 부분으로, Terraform이 인프라에 미칠 변경 사항을 미리 보기 또는 건식 실행으로 제공합니다. 인프라의 현재 상태를 Terraform 구성 파일에 정의된 원하는 상태와 비교하고 Terraform이 격차를 줄이기 위해 취할 구체적인 조치를 보여줍니다. 여기에는 새로운 가상머신 생성, 기존 데이터베이스 확장 또는 미사용 스토리지 볼륨 제거와 같은 리소스의 추가, 삭제 및 수정이 포함됩니다.

Terraform 플랜의 혜택

구성 코드가 인프라에 어떤 변화를 일으키는지 미리 볼 수 있는 기능은 다음과 같은 다양한 측면에서 유용합니다.

  • 투명성: Terraform 계획은 향후 변경 사항에 대한 세부적인 개요를 제공하여 인프라에서 생성, 수정 또는 삭제될 사항에 대한 명확한 그림을 제공합니다. 이러한 투명성은 오류를 최소화하고 배포 프로세스에 관여하는 모든 사람이 동일한 페이지에 있도록 합니다.
  • 위험 완화: 사전에 변경 사항을 미리 살펴봄으로써 사용자는 서비스를 중단하기 전에 잠재적인 문제를 파악하고 해결할 수 있습니다. 지형 계획은 리소스 충돌(예: 중복된 이름으로 VM 생성), 종속성 누락(예: 구성되지 않은 특정 보안 그룹이 필요한 데이터베이스) 또는 구성 파일의 오타로 인한 의도하지 않은 수정을 파악하는 데 도움이 될 수 있습니다.
  • 협업: Terraform 계획은 Git과 같은 버전 관리 시스템과 원활하게 통합되어 팀 협업을 촉진합니다. 팀원들과 계획 결과를 공유하면 코드 커밋의 맥락에서 변경 사항을 검토할 수 있으므로, 변경이 구현되기 전에 투명성과 책임감을 높일 수 있습니다.
  • 효율성: Terraform 계획은 사용자가 인프라 변경을 체계적으로 계획하고 실행하는 데 도움이 됩니다. 계획을 분석하면 변경 사항을 적용하기 전에 잠재적인 병목 현상이나 비효율성을 파악할 수 있습니다.
  • 안전: Terraform 계획은 운영 인프라에 적용되기 전에 변경 사항을 검토하고 검증할 수 있도록 함으로써 안전망 역할을 합니다. 이러한 보호 기능은 우발적인 수정을 방지하고 클라우드 환경의 안정성과 안정성을 보장합니다.

Terraform 계획 실행 방법

테라폼 계획을 실행하려면 먼저 로컬 컴퓨터에 테라폼이 설치되어 있는지 확인하십시오. 공식 HashiCorp 웹사이트 에서 적절한 버전을 다운로드하여 설치할 수 있습니다.

plan 명령을 실행하기 전에 작업 디렉토리에 main.tf이라는 이름의 기본 Terraform 구성 파일을 만들어야 합니다. 다음은 클라우드 공급업체에서 가상 머신 리소스를 생성하는 간단한 구성의 예입니다.

# Configure the cloud provider (replace with your provider details)
 provider "aws" {
   region = "us-east-1"
 }
 
 # Define a virtual machine resource
 resource "aws_instance" "my_vm" {
   ami           = "ami-0f78f7e824d9499e0"  # Replace with the desired AMI ID
   instance_type = "t2.micro"
 }

1. Terraform 디렉터리 초기화

main.tf 파일이 포함된 작업 디렉터리로 이동하여 터미널에서 다음 명령을 실행합니다.

$ terraform init

이 명령은 Terraform 디렉터리를 초기화하고, 구성에 언급된 모든 필수 플러그인 또는 모듈을 다운로드하며, Terraform과의 작업을 위한 환경을 준비합니다.

2. Terraform 계획 실행

초기화가 완료되면 다음 명령을 실행하여 실행 계획을 생성합니다.

$ terraform plan

이 명령은 Terraform 구성을 분석하여 인프라의 현재 상태(있는 경우)와 비교합니다. 그런 다음 구성에 정의된 원하는 상태를 달성하기 위해 Terraform이 취할 조치를 설명하는 세부 계획을 표시합니다. 계획은 일반적으로 생성, 수정 또는 삭제될 리소스를 보여줍니다.

3. 계획 출력 저장

향후 참조를 위해 계획을 저장하거나 팀원들과 공유하려면 계획 명령과 함께 -out 플래그를 선택적으로 사용할 수 있습니다. 예를 들어, 다음 명령은 plan.tfplan이라는 파일에 계획을 저장합니다.

$ terraform plan -out=plan.tfplan

terraform plan 명령은 변경 사항만 미리 봅니다. 인프라는 변경되지 않습니다. 계획을 검토하고 승인한 후 $ 테라폼 적용 명령을 사용하여 계획된 변경 사항을 실행할 수 있습니다.

Terraform Plan 산출물의 이해 및 분석

테라폼 계획 결과물은 일반적으로 여러 섹션으로 나뉘며, 각 섹션은 계획된 조치에 대한 귀중한 통찰력을 제공합니다.

리소스 작업

이 섹션에는 Terraform이 인프라 리소스에 대해 수행하고자 하는 구체적인 작업이 나와 있습니다. 이러한 작업은 세 가지 주요 유형으로 분류됩니다.

  • 생성(+): 이 기호는 Terraform이 구성에 따라 새로운 리소스를 생성함을 나타냅니다.
  • 읽기 (~): 이 기호는 Terraform이 기존 리소스의 상태를 읽고 변경이 필요한지 여부를 결정함을 의미합니다. Terraform은 일반적으로 계획 단계에서 필요한 조치를 결정하기 때문에 계획 출력에서 이 기호는 덜 빈번합니다.
  • 삭제 (-): 이 기호는 Terraform이 구성에 더 이상 정의되지 않은 기존 리소스를 삭제함을 나타냅니다.

리소스 세부 정보

이 섹션에서는 플랜의 영향을 받는 각 리소스에 대한 자세한 정보를 제공합니다. 다음은 일반적으로 찾을 수 있는 세부 사항입니다.

  • 리소스 유형: 이는 Terraform이 관리하는 인프라 리소스 유형을 지정합니다(예: aws_instance, azurerm_resource_group ).
  • 리소스 이름: Terraform 구성 내에서 리소스에 할당된 고유한 이름을 식별합니다.

계획된 변경 사항

이 섹션에서는 리소스에 적용될 특정 변경 사항에 대해 자세히 설명합니다. 생성 중인 리소스(+로 표시)의 경우, 정의될 속성과 해당 값이 나열됩니다. 수정 중인 리소스의 경우 기존 속성에 대한 변경 사항이 표시됩니다.

요약

계획 출력은 종종 계획된 조치에 대한 높은 수준의 개요를 제공하는 요약 섹션으로 마무리됩니다. 이 요약은 일반적으로 총 리소스 수를 다음과 같은 범주로 분류합니다.

  • 추가 예정: 생성할 새로운 리소스의 수

  • 변경 예정: 수정할 기존 리소스의 수

  • 파기 예정: 삭제할 기존 리소스 수

앞서 만든 샘플 구성으로 테라폼 계획을 실행하면 다음과 유사한 결과를 얻을 수 있습니다.

# $ terraform plan
 
 Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
   + create
 
 Terraform will perform the following actions:
 
   # aws_instance.my_vm will be created
   resource "aws_instance" "my_vm" {
     + ami           = "ami-0f78f7e824d9499e0"
     + instance_type = "t2.micro"
     + tags = {
       + Name = "sample-tag"
     }
   }

1. 리소스 작업: 첫 번째 줄은 Terraform이 이 계획 중에 생성 작업(+)을 수행함을 나타냅니다.

2. 리소스 세부 정보: 다음 섹션에서는 단일 리소스 aws_instance.my_vm 에 대해 자세히 설명합니다. 이는 Terraform이 AWS 환경에서 my_vm이라는 새 AWS EC2 인스턴스를 생성함을 의미합니다. AWS 세부 정보는 Terraform이 새 인스턴스에 적용할 AMI ID(ami-0f78f7e824d9499e0), 인스턴스 유형(t2.micro ), 태그(이름 = '샘플 태그 ')를 추가로 지정합니다.

3. 요약(암시적): 이 예제에서는 명시적으로 표시되지 않았지만, 보다 복잡한 계획 출력의 끝에 요약이 표시되어 생성할 총 리소스 수를 나타낼 수 있습니다.

Terraform 계획 활용을 위한 모범 사례

테라폼 계획 명령은 인프라 변경을 적용하기 전에 필요한 안전망입니다. 혜택을 극대화하기 위한 몇 가지 필수 관행은 다음과 같습니다.

리소스 변경 사항 면밀히 검토:

  • 생성(+) 또는 삭제(-)로 표시된 리소스에 집중합니다.
  • 새로운 리소스의 속성 값이 의도와 일치하는지 확인합니다(예: AMI ID, 스토리지 크기).
  • 기존 리소스의 수정 내용이 정확한지 다시 한번 확인하십시오.

잠재적 문제 발견 :

  • 리소스 충돌(예: 중복된 이름, 누락된 종속성)을 찾습니다.
  • 모든 필수 종속성(예: 보안 그룹)이 정의되었는지 확인합니다.
  • 서비스를 중단시킬 수 있는 예기치 않은 리소스 삭제에 주의하십시오.

출력 활용:

  • 계획된 변경 사항이 인프라 목표와 일치하는지 검증합니다.
  • 리소스 수정과 관련된 잠재적 비용 영향을 고려하십시오. 팀 검토 및 커뮤니케이션을 위한 계획 결과를 공유할 수도 있습니다.

결론

Terraform 계획은 Terraform 워크플로우에서 강력한 도구입니다. 인프라 변경을 적용하기 전에 미리 보고 검증할 수 있는 안전하고 투명한 방법을 제공합니다. Terraform 계획을 이해하고 효과적으로 활용하면 배포가 효율적이고 예측 가능하며 의도하지 않은 결과가 발생하지 않도록 보장할 수 있습니다.

퓨어스토리지는 Terraform 구축을 위한 최고의 영구 블록 스토리지 솔루션을 제공합니다. Portworx®는 모든 컨테이너 및 Kubernetes 테라폼 워크로드를 위한 포괄적인 데이터 플랫폼을 제공합니다. Pure Cloud Block Store™를 사용하면 온-프레미스 인프라와 마찬가지로 클라우드에서 모든 데이터베이스 또는 컨테이너 워크로드를 실행할 수 있습니다.

03/2025
Rancher Kubernetes Engine 2 on VMware with Portworx
Gain consistent experience across public cloud, on- premises, hybrid cloud, or edge architecture with Rancher Kubernetes Engine (RKE2) on VMware with Portworx.
레퍼런스 아키텍처
33 pages
연락처
퓨어스토리지에 문의하기Info icon
Chat icon
질문하기

퓨어스토리지 제품이나 인증 관련 질문이나 코멘트가 있으신가요?   저희가 도와드립니다.

Key icon
데모 예약

라이브 데모를 예약하고 퓨어스토리지가 데이터를 어떻게 강력한 결과로 전환해주는지 직접 확인해 보세요. 

연락하기: +82 2 6001-3330

언론홍보팀:  pr@purestorage.com

 

퓨어스토리지코리아 주소

30F 아셈타워,

517 영동대로,

강남구, 서울

대한민국

korea@purestorage.com

닫기
닫기Close X icon
지원하지 않는 브라우저입니다.

오래된 브라우저는 보안상 위험을 초래할 수 있습니다. 최상의 경험을 위해서는 다음과 같은 최신 브라우저로 업데이트하세요.