[Terraform] 테라폼 공부하기 #4. 블록 타입

ChuYong·2023년 5월 29일
0
post-thumbnail

안녕하세요 블록의 타입을 알아볼거에요
블록이 뭐냐? 는 이 테라폼 공부하기 시리즈 2화를 보고오세요

Provider

서비스 제공자에요. 우리의 경우엔 AWS에요
기본 구조

provider "provider_name -> 우리의 경우 aws" {
	region = "ap-northeast-2"
}

Resource

가장 흔한 타입 Resource에요.

기본 구조

resource "resource_type" "resource_name" {
	
}

리소스 타입엔 말그대로 그 리소스의 타입이 들어가요.
AWS 기준으로 대표적으로 awsvpc, aws_instance, aws_subnet 등이 있어요.
앞에 aws
가 붙었다는건 다른 뭐 gcp 이런얘들도 비슷한 구조라는 거겠죠? (사실 GCP는 몰루)

Variable

말그대로 변수에요. 스프링부트 웹 기본포트가 몇번이죠? 8080이에요 (개발자아님)
보통 AWS에 인스턴스 하나 트래픽을 밖으로 빼려면 다음을 설정해줘야해요

  • 인스턴스의 퍼블릭 IP 할당하기 or 로드밸런서 등 붙이기
  • 인스턴스 보안그룹 인바운드 8080 풀기

근데 앙심을 품은 개발자가 갑자기 프로덕션 코드에서 포트를 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] 을 하면 댄답니다.

Output

몬가 생성 전에는 알 수 없는 값들 있잖아요,
예를 들면 EC2 Auto Assigned Public IP라던지, 어떤 인스턴스가 Private Subnet에 떴을때 그 IP라던지..
꺼내올 수 있어요.

output "output_name" {
	value = aws_instance.???.public_ip
    description = "나의 작고 소중한 IP"
}
profile
백엔드 & 인프라 를 좋아하는 개발자에요

0개의 댓글