Terraform 시작하기

테라폼은 다양한 클라우드를 제공하고 있는 AWS, Azure, Google Cloud 리소스를 코드를 통해
온프레미스 시스템을 지원하며, 여러 리소스(가상 머신, 네트워크, 데이터베이스)를 프로비저닝할 수 있다.
테라폼 설치
- 테라폼은 공식 웹사이트(https://www.terraform.io/downloads.html) 다운로드할 수 있다.
- 압축 파일을 압축 해제한 후, 실행 파일을 실행 가능한 경로에 배치한다.
- 설치가 성공적으로 완료되었는지 확인하기 위해 terraform version 명령을 실행하여 테라폼 버전을 확인한다.
테라폼 기본 개념
- 테라폼 코드: 테라폼을 사용하여 인프라를 관리하기 위해 작성하는 코드로 HCL(HashiCorp Configuration Language)이라는 구성 언어로 작성된다.
- 리소스: 인프라 리소스(예: 가상 머신, 네트워크, 데이터베이스)를 정의하는 테라폼의 구성 요소이다.
- 공급자: 테라폼이 다양한 클라우드 제공 업체나 인프라 시스템과 상호 작용할 수 있도록 하는 플러그인이다. 각 공급자는 해당 클라우드 제공 업체의 API를 사용하여 리소스를 프로비저닝하고 관리한다.
- 상태 파일: 테라폼이 관리하는 현재 인프라 구성 상태를 추적하는 파일이다. 상태 파일은 프로비저닝된 리소스의 상태와 구성 정보를 포함한다.
테라폼 구성 파일 작성
테라폼 코드는 .tf 확장자를 가진 구성 파일에 작성된다.
구성 파일에서는 리소스를 정의하고 구성한다.
아래는 AWS 클라우드에서 가상 머신(EC2 인스턴스)을 생성하는 테라폼 구성 파일의 예시이다.
Provider 설정:
# provider 설정
provider "aws" {
region = "us-west-2"
}
테라폼 코드의 첫 번째 부분은 provider 블록으로, AWS 공급자를 설정한다.
**aws**는 테라폼이 AWS와 상호 작용할 수 있도록 해주는 공급자이다.
region 매개변수는 인프라를 프로비저닝할 AWS 리전을 지정한다.
위의 예에서는 "us-west-2" 리전을 사용한다.
가상 머신 리소스 정의:
# 가상 머신 리소스 정의
resource "aws_instance" "example" {
ami = "ami-0c94855ba95c71c99"
instance_type = "t2.micro"
tags = {
Name = "terraform-ex-instance"
}
}
위의 코드 블록은 resource 블록으로, aws_instance 리소스를 정의한다. 이 리소스는 AWS에서 EC2 인스턴스를 생성하도록 한다.
- ami 매개변수는 사용할 AMI(Amazon Machine Image) ID를 지정한다. AMI는 EC2 인스턴스를 구성하는데 사용되는 이미지이다.
- instance_type 매개변수는 생성될 EC2 인스턴스의 인스턴스 유형을 지정한다. "t2.micro"는 가장 기본적인 인스턴스 유형 중 하나이다.
- **tags**는 생성된 EC2 인스턴스에 추가되는 태그를 정의하는 블록이다. 위의 예시에서는 "Name"이라는 태그를 "terraform-ex-instance"로 설정하여 인스턴스에 이름을 부여한다.
이렇게 작성된 테라폼 코드를 실행하면, 테라폼은 지정한 AWS 리전에 t2.micro 인스턴스 유형의 EC2 인스턴스를 생성하고, 해당 인스턴스에 "terraform-ex-instance"라는 이름 태그를 추가했다.
이를 통해 AWS에서 인프라 프로비저닝을 자동화할 수 있다.
인프라 프로비저닝과 관리
terraform init
테라폼을 사용하기 전에 terraform init 명령을 실행하여 작업 디렉토리를 초기화한다.
이 명령은 필요한 공급자 플러그인을 다운로드하고 상태 파일을 초기화한다.
terraform plan
terraform plan 명령을 실행하여 변경 사항을 미리 확인할 수 있다.
이 명령은 테라폼 코드를 분석하고 변경 사항을 감지하여 프로비저닝될 리소스의 목록을 제공한다.
terraform apply
terraform apply 명령을 실행하여 변경 사항을 적용한다.
이 명령은 테라폼에 의해 인프라 리소스가 생성, 수정 또는 삭제되어
원하는 상태로 인프라가 업데이트된다.
terraform validate terraform validate 명령은 테라폼 코드의 유효성을 검사한다.
코드에 구문 오류나 잘못된 설정이 있는지 확인하고, 테라폼이 코드를 올바르게 해석할 수 있는지 확인한다.
terraform refresh terraform refresh 명령은 테라폼의 상태 파일과 실제 인프라 리소스의 현재 상태를 비교하여
상태 파일을 업데이트한다. 이 명령은 테라폼이 리소스의 변경 사항을 감지하여 정확한 상태를 유지하도록 도와준다.
terraform destroy terraform destroy 명령은 테라폼으로 생성된 인프라 리소스를 삭제한다.
이 명령을 실행하면 테라폼이 상태 파일을 확인하고, 해당 상태에 맞추어 리소스를 제거한다.
이를 통해 인프라를 테라폼과 일치하지 않는 상태로 복원할 수 있다.
terraform output terraform output 명령은 테라폼 출력 변수를 표시한다.
출력 변수는 테라폼 코드에서 정의된 값들을 참조하고 출력할 수 있는 변수이다.
이 명령을 사용하면 테라폼이 생성한 리소스에 대한 정보를 확인할 수 있다.
이러한 명령들을 통해 테라폼은 인프라 프로비저닝과 관리를 지원하며,
변경 사항을 확인하고 적용하며, 인프라 리소스를 제거할 수 있다.