[Devops] Terraform 기본

J-USER·2023년 2월 15일
0

DevOps

목록 보기
4/10
post-thumbnail

Intro

Infra as Code

IaC, 코드로 인프라를 이루는 요즘 트랜드에 맞춰서 한번 공부해보기로 하자.. IaC는 코드동작 = 인프라 동작으로 작동하기 때문에 툴이 필요하다. 다양한 툴이 있지만, 테라폼은 이 씬을 정복한 최고봉이다.

.tf 형식으로 문법도 쉽고 자료도 많다.

🙋 툴인데 뭔 설명을 하고있냐?
🤖 기본을 모르고 쓰면 어캄?

먼저 테라폼의 구성요소를 하나씩 살펴보자

테라폼 구성요소

Provider

테라폼으로 생성할 인프라의 종류를 의미합니다. 즉 리소스를 다루기 위한 파일들(sdk 등등) 을 다운로드 하는 역할.

provider "aws" <- 실제 Provider들이 여기 들어감{
	region = "ap-northest-2" <- 여기부터는 파라미터들..
    version = "~^ 3.0" 
}

Resource

테라폼으로 실제로 생성할 인프라 자원을 의미함.

# main.tf , vpc.tf 등 원하는 형태로 파일 이름 사용함.
# 테라폼으로 VPC 생성하는 코드
resource "aws_vpc" <- ㄹㅇ 리소스 이름, 타입이라 생각하면됨 "example" <- 이름{
	cidr_block = "10.0.0.0/16" <- 여기서부턴 파라미터들..
}

State

테라폼을 통해 생성한 자원의 상태 (파일 형태로 최종적으로 실행하는 파일)

# 생성한 리소스의 결과값이지, 현재 작동하는 인프라의 실제 상태는 아님
# state 상태 = 현재 인프라로 sync 를 맞춰주는게 데브옵스의 역할임
{
	"version" :4,
    ....
}

Output

테라폼으로 만든 자원을 변수 형태로 state에 저장하는 것

resource "aws_vpc" "example"{
	cidr_block = "10.0.0.0/16" <- 여기서부턴 파라미터들..
}
# aws_vpc 를 만들면 vpcId , cidr 값이 생기는데 이걸 저장하는 변수 느낌.
# 리소스 값을 변수로 state를 만드는것. 나중에 리모트로 이걸 참조해서 사용가능.
ouput "vpc_id" {
	value = vpcId
}

ouput "cidr" {
	value = vpcId
}

Module

공통적으로 사용하는 코드를 문자 그대로 모듈 형태로 정의한것. 재사용성이 아주 높아서 자주 씀.(공통 함수로 뺀st)

Remote

다른 경로의 state를 참조하는것. output 변수를 불러올때 사용한다. 원격 참조 개념 (import)

기본 명령어

  • init : 각종 설정 진행
  • plan : 예측결과 보여줌
  • apply : 실제 인프라 생성
  • import : 만들어진 resource를 state 파일로 옮겨줌.
  • state : state를 다루는 명령어
  • destroy : state 파일 삭제

init (내부 설정 진행) -> plan(흡사 컴파일?백퍼는 아님) -> apply(ㄹㅇ 적용)
🙋 이것만 알면 되나요?
🤖 ㅇㅇ 이게 90퍼임

profile
호기심많은 개발자

0개의 댓글