IaC/Infrastructure Provisioning

1. Terraform 기초 : 설치 및 .tf 파일 설명

Somaz 2023. 4. 4. 20:00
728x90
반응형

Overview

Terraform은 HashiCorp에서 개발한 오픈 소스 코드형 인프라(IaC) 도구로, 클라우드 및 온프레미스 인프라를 선언적 구성 파일을 통해 정의, 프로비저닝 및 관리할 수 있도록 한다.

 

이 문서에서는 Terraform의 설치 방법, 주요 개념, 기본 파일 역할, 주요 명령어에 대해 다룬다.

 

 

 

📅 관련 글

2023.03.30 - [IaC/Infrastructure Provisioning] - 1. Terraform 기초 : 설치 및 .tf 파일 설명

2023.03.31 - [IaC/Infrastructure Provisioning] - 2. Terraform 변수 사용법(use-variable) - AWS

2023.04.03 - [IaC/Infrastructure Provisioning] - 3. Terraform 다양한 변수(variable, local, data...output, input) - AWS

2023.04.03 - [IaC/Infrastructure Provisioning] - 4. Terraform의 다양한 Function(함수)

2023.04.04 - [IaC/Infrastructure Provisioning] - 5. Terraform의 다양한 Expression

 

 

 

 


 

 

 

Terraform이란?

Terraform은 HCL(HashiCorp Configuration Language)을 사용하여 인프라의 원하는 상태를 정의하고, 이를 자동으로 구축하고 관리하는 IaC 도구이다. AWS, Azure, Google Cloud 등 다양한 클라우드 제공자를 지원하며, 온프레미스 및 기타 서비스와도 연계하여 사용할 수 있다.

 

https://www.veritis.com/services/terraform/

 

 

 

 

 

Terraform의 주요 기능

  • 선언적 구성(Declarative Configuration): 원하는 상태를 코드로 정의하면 Terraform이 이를 자동으로 적용한다.
  • 멀티 클라우드 지원(Multi-cloud Support): 다양한 클라우드 환경에서 동일한 구성 파일을 사용할 수 있다.
  • 모듈화(Modularity): 재사용 가능한 모듈을 구성하여 여러 프로젝트 간 코드를 공유할 수 있다.
  • 상태 관리(State Management): 리소스의 상태를 파일로 저장하여 변경 사항을 추적하고 조정할 수 있다.
  • 협업 및 버전 관리(Version Control & Collaboration): Git 등의 버전 관리 시스템과 통합하여 협업을 효율적으로 수행할 수 있다.

 

 

 

 

 


 

 

Terraform 설치방법

 

 

Installed  gnupgsoftware-properties-common, and curl packages

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common

 

 

Install the HashiCorp GPG key

wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

 

 

Verify the key's fingerprint

gpg --no-default-keyring \
--keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
--fingerprint

 

 

The gpg command will report the key fingerprint

/usr/share/keyrings/hashicorp-archive-keyring.gpg
-------------------------------------------------
pub   rsa4096 XXXX-XX-XX [SC]
AAAA AAAA AAAA AAAA
uid           [ unknown] HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com>
sub   rsa4096 XXXX-XX-XX [E]

 

 

Add the official HashiCorp repository to your system

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list

 

 

Download the package information from HashiCorp

sudo apt update

 

 

Install Terraform from the new repository

sudo apt-get install terraform

 

 

 

 

 


 

 

Terraform 주요 파일 설명

Terraform 프로젝트는 여러 개의 파일로 구성되며, 각각 특정한 역할을 담당한다.

 

 

1. `variables.tf` (변수 정의 파일)

Terraform에서 사용할 입력 변수를 정의하는 파일이다.

variable "region" {
  description = "AWS 리전을 정의합니다."
  type        = string
  default     = "ap-northeast-2"
}

 

 

2. `terraform.tfvars` (변수 값 설정 파일)

변수의 실제 값을 지정하는 파일이다.

region = "us-east-1"

 

 

3. `main.tf` (핵심 인프라 정의 파일)

리소스 생성, 업데이트 및 삭제를 정의하는 핵심 구성 파일이다.

provider "aws" {
  region = var.region
}

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "example-vpc"
  }
}

 

 

4. `outputs.tf` (출력값 정의 파일)

Terraform 실행 후 필요한 정보를 출력하는 파일이다.

output "vpc_id" {
  value       = aws_vpc.example.id
  description = "생성된 VPC ID"
}

 

 

5. `version.tf `(버전 제어 파일)

Terraform 버전 및 공급자 플러그인의 버전을 정의하는 파일이다.

terraform {
  required_version = ">= 1.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.47"
    }
  }
}
 

 

 

 

 


 

 

Terraform 주요 명령어

Terraform을 사용하여 인프라를 관리하는 주요 명령어는 다음과 같다.

terraform init      # 작업 디렉토리 초기화
terraform validate  # 구성 파일 유효성 검사
terraform plan      # 실행 계획 확인
terraform apply     # 인프라 적용
terraform destroy   # 생성된 인프라 제거
terraform output    # 출력값 확인
terraform fmt       # 코드 스타일 정리

 

 

 

변수 파일을 사용하여 terraform apply 실행 시 값 읽는 순서는 다음과 같다.

  1. 환경 변수
  2. terraform.tfvars 파일
  3. terraform.tfvars.json 파일
  4. *.auto.tfvars 또는 *.auto.tfvars.json 파일 (사전순)
  5. 명령줄 옵션 -var 또는 -var-file에서 제공된 값

 

 

 

예제:

terraform apply -var-file="terraform.tfvars"

 

 

 

 


 

 

 

 

 

마무리

이번 학습에서는 Terraform의 기본 개념, 설치 방법, 주요 파일, 그리고 필수 명령어에 대해 살펴보았다. Terraform을 활용하면 클라우드 인프라를 코드로 정의하고 자동화할 수 있으며, 이를 통해 효율적인 인프라 관리 및 협업이 가능하다.

다음 학습에서는 Terraform의 변수(variable) 사용법모듈(module) 활용법을 깊이 있게 다룰 예정이다.

 

 

 

 


Reference

Install Terraform

 

Terraform의 모든 것

 

Terraform 간단 사용법

 

Terraform AWS Provider Github 주소

 

Terraform input variables

728x90
반응형