[IaC] 코드 블록
안녕하세요, 달콤한달팽이입니다.🐌😎
앞으로 사용할 테라폼은
사실상 코드 블록의 조합이라고 봐도 무관할 정도로
모든 것이 블록으로 구성되어 있습니다.
때문에 오늘은 테라폼을 구성하는 블록의 종류와 사용법에 대하여 알아보도록 하겠습니다.
블록
테라폼은 여러가지 코드 블록으로 구성되어 있습니다.
terraform, provider, resource, variable 등이 이에 해당하며, 각각의 블록은 자신만의 특징을 지니고 있습니다.
또한 블록은 아래와 유사하게 구성됩니다.
"블록명" "타입" "이름" {
인자 = 값
}
또한 코드의 첫 시작은 테라폼의 가장 중심이 되는 main.tf에서 수행되며,
다른 언어와 마찬가지로 .tf 파일을 분할하여 관리할 수도 있습니다!
이제 각각의 블록을 보다 자세히 알아보고, 실습을 통해 실제 인프라를 만들어보도록 하겠습니다!
1) Terraform 블록
terraform 블록은 테라폼의 구성을 명시하는 데 사용되는 블록입니다.
테라폼의 버전이나 프로바이더 버전은 기본적으로 자동 설정되지만,
여러 사람과의 협업이 필요할 경우 그 버전을 고정시켜야할 필요가 있습니다.
이러 떄에 사용되는 블록이 terraform 블록이며, 아래와 같이 구성됩니다.
또한
terraform {
인자 = 값
}
실제 사용 예시는 아래와 같습니다.
(1) 테라폼의 버전은 1.3.0 이하
(2) aws 버전은 4.2.0
(파일명: main.tf)
2) Provider 블록
provider 블록은 앞으로 정의할 코드가 어떤 인프라 환경에서 반영될 것인지 정의하는 블록입니다.
이러 떄에 사용되는 블록이 terraform 블록이며, 아래와 같이 구성됩니다.
provider "대상" {
인자 = 값
}
실제 사용 예시는 아래와 같습니다.
(1) region은 변수값으로 지정된 region
(2) key는 변수값으로 지정된 key
(파일명: main.tf)
앞으로 진행할 실습에서는 AWS를 사용할 것이므로 aws를 선언하였으며,
추가로 필요한 리전, 계정 키값을 설정해두었습니다!
3) Variable 블록
variable 블록은 변수를 정의하는 블록입니다.
타입과 디폴트 값을 지정할 수 있습니다.
variable "변수_이름" {
type = 타입
default = "값"
description = "설명"
}
실제 사용 예시는 아래와 같습니다.
(1) access_key라는 변수 생성
(2) type은 문자열(string)이며, 설명은 access key
(파일명: variables.tf)
하지만 정작 변수에 대한 값은 없다는 것을 확인할 수 있습니다.
이는 위 정보들이 개인정보이므로 노출되지 않기 위해서 다른 파일로 내용만 빼둔 것입니다.
.tfvars 파일에 아래와 같이 변수에 대한 실제 값을 넣음으로써,
키를 한곳으로 모아 유출을 방지할 수 있습니다.
(파일명: terraform.tfvars)
4) Resource 블록
resource 블록은 선언된 항목을 생성하는 동작을 수행하는 블록입니다.
즉, 실질적인 인프라 구성을 담당하는 블록으로 가장 중요한 요소입니다.
resource "리소스_타입" "이름" {
인자 = 값
}
실제 사용 예시는 아래와 같습니다.
(1) VPC를 생성할 것이며, 이름은 main으로 지정
(2) VPC의 cidr은 10.0.0.0/16
(3) VPC의 Name 태그는 terraform_vpc
코드의 정상 작동 여부 확인을 위해 간단하게 VPC만 생성하도록 하겠습니다!
5) Data 블록
data 블록은 테라폼으로 정의되지 않은 외부 리소스나 데이터를 테라폼 내에 참조할 때 사용하는 블록입니다.
즉, 실질적인 인프라 구성을 담당하는 블록으로 가장 중요한 요소입니다.
data "프로바이더_리소스타입" "이름" {
인자 = 값
}
실제 사용 예시는 아래와 같습니다.
(1) 로컬의 파일을 가져올 것이며 이름은 test
(2) filename이라는 변수에 "경로/abc.txt" 값을 지정
6) Output 블록
output 블록은 코드가 인프라에 반영된 후, 반영 세부사항을 테라폼 코드에 저장할 때 사용하는 블록입니다.
이를 통해, EC2를 생성한 후 콘솔을 접속하지 않고 IP 등 정보를 확인할 수 있게됩니다.
output "리소스타입" {
인자 = 값
}
실제 사용 예시는 아래와 같습니다.
(1) vpc ID를 출력
주어진 예시 코드를 작성하고 terraform plan을 통해
해당 코드의 예상결과를 확인하며 실습하는 것도 큰 도움이 될 것 같습니다.
다음 글에서는 이러한 블록들을 조합하여 실제 리소스를 구축하는 실습을 진행해보겠습니다.
감사합니다!