본문 바로가기!

Terraform

[Terraform] Variables, Outputs, Data, functions

728x90
반응형

Variables and Outputs

  • Terraform에서 변수(variables)는 크게 input, output, local로 볼 수 있음.
  • local 변수는 주로 특정 값들을 연산하여 하나의 변수로 관리하려 할 때 사용. merge, concat, max와 같은 함수를 사용하여 특정 local변수를 생성 가능.
# input variables
variable "eks_version" {
  default = "1.22"
}

# output variables
output "dmz_subnet_id" {
  value = aws_subnet.dmz_subnet.*.id
}

# local variables
locals {
  common_tags = {
    Service = local.service_name
    Owner   = local.owner
  }
}

locals {
    tags = merge(
            var.tags1,
            var.tags2,)

    instance_ids = concat(aws_instance.test1.*.id, aws_instance.test2.*.id)

    max_subnet_length = max(
    length(var.public_subnets),
    length(var.private_subnets)
    )
}

4. concat 함수(function)

  • concat 은 둘이상의 목록을 가져와서 단일 목록으로 결합하는 함수(function)
output "iam_user_id" {
  value = concat([aws_iam_user.iam-user-account["alice"].arn, 
		  aws_iam_user.iam-user-account["jh"].arn])
}


=====================================
Outputs:

iam_user_id = [
  "arn:aws:iam::574771129478:user/alice",
  "arn:aws:iam::574771129478:user/jh",
]

5. element 함수(function)

  • element는 목록에서 단일 요소를 검색할 수 있는 기능.
  • 지정된 index가 목록의 길이보다 큰 경우 인덱스는 목록의 길이를 따라 index 래핑.
> element(["a", "b", "c"], 1)
b

> element(["a", "b", "c"], 3)
a

> count =2
> element(["a", "b", "c"], count.index)

6. Data source

  • data source는 특정 resource의 값(name, arn, id값 등)을 가져와 변수로 저장하여 사용 가능.
  • filter 값을 설정하여 특정 ami 정보등을 가져올 수 있다.
data "aws_ami" "ubuntu2004" {
  most_recent = true         #최신 ami가져옴

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical (우분투를 만든회사에 대해서만 ami가져옴)
}

 

 



728x90
반응형