terraform variable (변수)

김성인·2023년 10월 31일
0

[CI/CD] 🪀Terraform

목록 보기
4/9

테라폼 구성 파일에 입력할 수 있는 값을 정의할 때 사용함
변수를 사용하여 동적이고 유연하게 재 사용 가능함

# variables.tf
variable "region" {
  type = string
  default = "us-west-1"
}

# main.tf
provider "aws" {
  region = var.region # var.선언한변수
}

resource "aws_instance" "sample"{
  ami = "ami-xxxxxxx"
  instance_type = "t2.micro"
}

type

  • string : "string"
  • number (numeric)
  • bool
  • list : ["a1", "a2", "a3] -> index 0 부터 시작함
  • map : key-value 쌍

  • object

json 과 같은 객체 형태

variable "server"{
  type = object({
    name = string
    instance_type = string
  })
  default = {
    name = "my-server"
    instance_type = "t2.micro"
  }
resource "aws_instance" "ec2" {
  name = var.server.name
  instance_type = var.server.instance_type
  • tuple : 여러 데이터 타입을 저장 가능함
variable "example_tuple"{
  type = tuple([string, number, bool]) // 형식 잘 맞출것
  default = ["my_string", 23, true]

output "tuple_example" {
  value = var.example_typle[0] // returns "my_string"
}
  • set : 여러 데이터 타입을 저장 가능함, list와 비슷하나 고유 값을 가짐
variable "example_set" {
  type = set(string)
  default = ["v1", "v2", "v3"]
}

output "set_example" {
  value = var.my_set
}
  • any : default
variable "any_example" {
  type = any
  default = {
    name = "my-resource"
    tags = { // map
      env = "prod"
      app = "app1"
    }
  }
}
resource "aws_instance" "ec2" {
  name = var.any_example.name
  tags = var.v.tags

Variable 정의방법

  1. Variables.tf
  2. 환경 변수
  • "TFVAR" + prefix
  1. tfvars file : 특정 이름 관례를 가지는 변수 선언
  • terraform.tfvars
  • terraform.tfvars.json
  1. Autoloaded tfvars files : 특정이름으로 된 파일의 변수 선언
  • *.auto.tfvars
  • *.auto.tfvars.json
  1. Command line arguments : 명령어 실행시 전달하는 매개변수 형태 (변수 지정시 가장 높은 우선순위)
  • terraform apply -var="image_id=ami-xxxxx"

0개의 댓글