
TL;DR
- IaC 를 위해서 공부 하고 책읽고 찾아보면서 결국은 손가락에 익숙해지는 것만큼 좋은게 없으므로 일단 만들어보면서 익숙해지기위해서 아래에 정리해본다.
- 최대한 짧게 쓰려고 노력할테니.. 길면 길다고.. 댓글좀!!
- provider : 테라폼으로 생성할 인프라의 종류
- resource : 테라폼으로 실제로 생성할 인프라 자원
- state : 테라폼을 생성할 자원의 상태
- 현재 인프라의 상태를 의미하는 것은 아님
- state는 원격저장소인 backend 에도 저장될 수 있음
- output : 테라폼으로 만든 자원을 변수 형태로 state에 저장하는 것
- module : 공통적으로 활용할 수 있는 코드를 문자 그대로 모듈형태로 정의
- 한번 만들어진 테라폼 코드로 같은 형태를 반복적으로 만들어낼때 주로 사용 (재사용에 대한 강점!)
module "vpc" {
source = "../_modules/vpc"
cidr_blr = "10.0.0.0/16"
}
- remote : 다른 경로의 state 를 참조하는 것, 보통 output변수를 불러올때 주로 사용
- 원격참조개념 (remote state는 key 값에 명시된 state에서 변수를 가져옴)
data "terraform_remote_state" "vpc" {
backend = "remote"
config = {
bucket = "terraform-s3-bucket"
region = "ap-northeast-2"
key = "terraform/vpc/terraform.tfstate"
}
}
테라폼 기본 명령어
- init : 테라폼 명령어 사용을 위해 각종 설정을 진행
- plan : 테라폼으로 작성한 코드가 실제로 어떻게 만들어질지에 대한 예측
- apply: 테라폼 코드로 실제 인프라 생성
- import : 이미 만들어진 자원을 테라폼 state파일로 옮겨주는 명령어
- 예를 들면 route53 자원을 state 자원으로 옮겨주기 위할때 사용
- state : 테라폼 state를 다루는 명령어, 하위명령어로 my/push와 같은 명령어도 포함
- destroy : 생성된 자원 / state 파일 모두 삭제