본문 바로가기

개발하자

테라폼 플랫 튜플과 문자열 집합

반응형

테라폼 플랫 튜플과 문자열 집합

나는 각 IP에 대한 IP 주소와 메타데이터의 json을 포함하는 다음 테라폼 allowed_ips tuple을 가지고 있다. 나는 튜플을 평평하게 하려고 하는데, ["2.2.2", "3.3.3"] 형식의 IP 주소 목록을 가져오면 ip_rules 변수로 전달된다.

변수

allowed_ips = [
    {
      name       = "ip1"
      ip_address = "3.3.3.3"
    },
    {

      name       = "ip2"
      ip_address = "127.0.0.1"
    }
  ]


자원

variable "allowed_ips" {
  type = list(object({
    name       = string,
    priority   = string,
    ip_address = string
  }))
}

network_acls {
    default_action = "Deny"
    bypass         = "AzureServices"

    ip_rules =  jsonencode(var.allowed_ips.*.ip_address)
  }

내가 규칙을 설정할 때 문제 없이 생성되지만 위의 allowed_ips에서 변수를 구문 분석하고 싶다.

나는 다음과 같은 다양한 방법을 시도했다.

  • jsonencode(var.allowed_ips.*.ip_address)
  • "${join("\\,", local.subnets.*.id)}"
  • 각각의 포어를 통해 반복해서,

안타깝게도 대부분의 솔루션은 오류를 발생시킵니다.

아무쪼록 잘 부탁드립니다.




단순 for 루프를 사용하여 집합을 만들 수 있습니다.

ip_rules = [for i in var.allowed_ips : i.ip_address]



그 주장은 유형의 값을 기대하는 것처럼 보인다. 변수를 사용하려면 다음과 같은 작업을 수행할 수 있어야 합니다.

ip_rules = toset(var.allowed_ips[*].ip_address)

함수는 지정된 값을 문자열로 인코딩합니다. 문자열은 인수가 예상하는 유형이 아닙니다. 반환 값이 문자열 유형이기 때문에 함수에 대해서도 동일하게 말할 수 있습니다.


반응형