Infra as Code
IaC, 코드로 인프라를 이루는 요즘 트랜드에 맞춰서 한번 공부해보기로 하자.. IaC는 코드동작 = 인프라 동작으로 작동하기 때문에 툴이 필요하다. 다양한 툴이 있지만, 테라폼은 이 씬을 정복한 최고봉이다.
.tf 형식으로 문법도 쉽고 자료도 많다.
🙋 툴인데 뭔 설명을 하고있냐?
🤖 기본을 모르고 쓰면 어캄?
먼저 테라폼의 구성요소를 하나씩 살펴보자
테라폼으로 생성할 인프라의 종류를 의미합니다. 즉 리소스를 다루기 위한 파일들(sdk 등등) 을 다운로드 하는 역할.
provider "aws" <- 실제 Provider들이 여기 들어감{
region = "ap-northest-2" <- 여기부터는 파라미터들..
version = "~^ 3.0"
}
테라폼으로 실제로 생성할 인프라 자원을 의미함.
# main.tf , vpc.tf 등 원하는 형태로 파일 이름 사용함.
# 테라폼으로 VPC 생성하는 코드
resource "aws_vpc" <- ㄹㅇ 리소스 이름, 타입이라 생각하면됨 "example" <- 이름{
cidr_block = "10.0.0.0/16" <- 여기서부턴 파라미터들..
}
테라폼을 통해 생성한 자원의 상태 (파일 형태로 최종적으로 실행하는 파일)
# 생성한 리소스의 결과값이지, 현재 작동하는 인프라의 실제 상태는 아님
# state 상태 = 현재 인프라로 sync 를 맞춰주는게 데브옵스의 역할임
{
"version" :4,
....
}
테라폼으로 만든 자원을 변수 형태로 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
}
공통적으로 사용하는 코드를 문자 그대로 모듈 형태로 정의한것. 재사용성이 아주 높아서 자주 씀.(공통 함수로 뺀st)
다른 경로의 state를 참조하는것. output 변수를 불러올때 사용한다. 원격 참조 개념 (import)
init (내부 설정 진행) -> plan(흡사 컴파일?백퍼는 아님) -> apply(ㄹㅇ 적용)
🙋 이것만 알면 되나요?
🤖 ㅇㅇ 이게 90퍼임