Terraform 기초: 변수와 변수의 활용

2024. 11. 18. 21:25·기초 지식/Terraform

1. Terraform 변수

terraform 은 대규모 프로비저닝 관리를 위해 변수 를 지원해준다. 변수는 어떻게 구성되어 있고, 어떻게 사용하는지 알아보자

1.1 Terraform 변수의 구성

변수는 3개의 argument 로 구성된다.

  • default: 변수의 기본 값을 지정한다.
  • type: 변수의 타입 을 지정한다.
  • description: 변수에 대한 메타데이터를 지정한다.

아래와 같이 변수를 만들 수 있다.

variable "filename" {
 default = "pets.txt"
 type = string
 description = "name of file"
}

variable "length" {
 default = 2
 type = number
 description = "length of ..."
}

1.2 Terraform 변수 타입

Terraform은 인프라를 코드로 관리하기 위해 다양한 데이터 타입을 지원한다. 이러한 타입을 이해하면 효율적인 인프라 정의와 관리를 할 수 있다.

1.2.1. 기본 타입 (Primitive Types):

  • 문자열 (string): 유니코드 문자들의 시퀀스로, 예를 들어 "hello"와 같다.
  • 숫자 (number): 정수와 부동소수점을 모두 포함하며, 예를 들어 15나 6.283185 등이 있다.
  • 불리언 (bool): 참(true) 또는 거짓(false) 값을 가지며, 조건문 등에 사용된다.

1.2.2. 복합 타입 (Complex Types):

복합 타입은 collection type 과 structural type 으로 구분지을 수 있다.

collection type 에는 list, map, set 이 있고 structural type 에는 object 와 tuple 타입이 있다.

 

리스트 (list)

동일한 타입의 값들이 순서대로 나열된 시퀀스이다. 예를 들어, ["us-west-1a", "us-west-1c"] 가 있다.

list 를 이용하는 방법은 다음과 같다. 

 

 

맵 (map)

키-값 쌍으로 이루어진 집합으로, 각 키는 고유해야 한다. 예를 들어, {"name" = "Mabel", "age" = 52} 가 있다.

셋 (set)

고유한 값들의 집합으로, 순서가 없으며 중복을 허용하지 않는다.

그런데 set 타입으로 만든 변수는 이를 수용할 수 있는 argument 가 특정되어 있다.

이떄 string 타입을 가져오기 위해서는 다양한 방법을 사용할 수 있는데, 아래는 그 예시 3개를 보여준다.

 

객체(Object), 튜플(Tuple)

 

3. 특수 타입:

  • null: 값의 부재를 나타내며, 리소스의 특정 속성을 생략하고자 할 때 사용된다.

1.3 Terraform 변수 적용

variable 블록을 기존과 같이 resource 가 선언된 블록에서 같이 관리해도 된다. 하지만 동일 작업공간에서 terraform 은 .tf 파일을 모두 읽어들여서 작업을 진행하므로 굳이 둘을 하나의 파일에서 관리하지 말고 main.tf 와 variable.tf 로 나눠보도록 하자

  • main.tf: 리소스를 정의하는 테라폼 파일
  • variable.tf: 리소스에서 사용할 변수를 정의하는 테라폼 파일

HCL 기본기에서 다뤘듯이 argument 에 expression 을 대입할 수 있다.

main.tf
variable.tf

그리고 terraform init > terraform paln > terraform apply 순서로 돌리면 작업공간에 pets.txt 가 생성되면서 랜덤한 문자열이 생성된다.


1.4 Terraform 변수 관리

그렇다면 이제는 variable 의 내용만 바꾸면 변경 사항을 반영할 수 있지 않을까?

변경된 variable.tf

terraform paln > terraform apply 를 한 결과 기존 작업공간에 있던 pets.txt 는 사라지고 pets2.txt 가 생성되었다. 그리고 그 내용도 랜덤 변수 3개가 생성되는 것으로 바뀌었다.

'기초 지식 > Terraform' 카테고리의 다른 글

Terraform 기초: 리소스 만들어보기  (0) 2024.11.18
'기초 지식/Terraform' 카테고리의 다른 글
  • Terraform 기초: 리소스 만들어보기
개발프로브
개발프로브
가볍게, 오랫동안 기록하고 싶은 블로그입니다.
  • 개발프로브
    ProbeHub
    개발프로브
  • 전체
    오늘
    어제
    • 분류 전체보기 (49) N
      • 탐구 생활 (40) N
        • 개발 탐구 (5)
        • FastAPI CORS (3)
        • FastAPI Log (4)
        • gRPC&Python (4)
        • SpringBoot 파헤치기 (2)
        • Python (6) N
        • FastAPI (4)
        • Terraform (8)
        • MSA (0)
        • GraphQL (2)
        • 데이터베이스 (2)
      • 기초 지식 (9)
        • Terraform (2)
        • MSA (5)
        • K8s (2)
  • 블로그 메뉴

    • 링크

      • github
      • stackoverflow
    • 공지사항

    • 인기 글

    • 태그

      how sqlalchemy works
      fastapi cors
      Python
      python monorepo namespace
      트랜잭션 일관성
      python 공통모듈
      python monorepo using uv
      FastAPI
      MSA
      spring 트랜잭션
      msa monorepo
      python hatcling namespace
      python monorepo
      sqlalchemy
      python namespace
      grpc
      티스토리챌린지
      how sqlalchemy orm works
      오블완
      springboot
      python 불변 객체
      python msa monorepo
      db 계층형
      fastapi logging
      PostgreSQL
      java
      python shared module
      rest vs grpc
      rdb 계층형
      Terraform
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    개발프로브
    Terraform 기초: 변수와 변수의 활용
    상단으로

    티스토리툴바