안녕하세요 블록의 타입을 알아볼거에요
블록이 뭐냐? 는 이 테라폼 공부하기 시리즈 2화를 보고오세요
서비스 제공자에요. 우리의 경우엔 AWS에요
기본 구조
provider "provider_name -> 우리의 경우 aws" {
region = "ap-northeast-2"
}
가장 흔한 타입 Resource에요.
기본 구조
resource "resource_type" "resource_name" {
}
리소스 타입엔 말그대로 그 리소스의 타입이 들어가요.
AWS 기준으로 대표적으로 awsvpc, aws_instance, aws_subnet 등이 있어요.
앞에 aws가 붙었다는건 다른 뭐 gcp 이런얘들도 비슷한 구조라는 거겠죠? (사실 GCP는 몰루)
말그대로 변수에요. 스프링부트 웹 기본포트가 몇번이죠? 8080이에요 (개발자아님)
보통 AWS에 인스턴스 하나 트래픽을 밖으로 빼려면 다음을 설정해줘야해요
근데 앙심을 품은 개발자가 갑자기 프로덕션 코드에서 포트를 8090으로 바꿔버린거에요!
DevOps 관리자는 눈물을 머금고 야근을 하며 테라폼 모든 파일에서 8080포트를 찾기 시작했어요..
그러다 DevOps관리자가 실수로 다른 인스턴스의 보안그룹 포트를 바꿔버렸고..
서비스는 사용 불가능 상태가 되어 DevOps관리자는 장문의 사과문을 작성하게 되었답니다..
어때요 정말 슬프죠?
아무튼 이런 "완전히 고정된" 그런 값은 아니고 때떄로 바뀔만한,, 그런 값을 variable로 관리할 수 있어요.
기본 구조
variable "variable_name" {
description = "필요없는 설명을 입력해주세요"
type = string
default = "my default value"
}
예를 들어 위의 DevOps 관리자가 서버 포트를 다음과 같이 선언해두었다면, 야근을 할일도, 사과문을 쓸 일도 없었을거에요.
variable "server_port" {
description = "야근 방지용 서버 포트 변수"
type = number
default = 8080
}
이 변수를 접근하려면 var.[variable_name] 을 하면 댄답니다.
몬가 생성 전에는 알 수 없는 값들 있잖아요,
예를 들면 EC2 Auto Assigned Public IP
라던지, 어떤 인스턴스가 Private Subnet에 떴을때 그 IP라던지..
꺼내올 수 있어요.
output "output_name" {
value = aws_instance.???.public_ip
description = "나의 작고 소중한 IP"
}