Terraform에서 중첩 된 객체 목록을 반복하는 방법

mm3398145

지정된 yaml 파일을 다운로드 한 다음 yaml을 k8s 구성 맵의 데이터 필드에 대한 소스로 사용하는 TF 모듈을 만들고 있습니다. 하나의 데이터 키-값 쌍 (yaml 파일)으로 여러 configmap을 만드는 작업 솔루션이 있지만 하나의 configmap 당 여러 키-값 쌍 (yaml 파일)에 대한 지원도 추가해야합니다.

main.tf

data "http" "config-map" {
  for_each = var.cloud-configmap

  url = format("https://%s", each.value.url)

  request_headers = {
    Accept = "text/plain"
  }
}

resource "kubernetes_config_map" "configmap" {
  for_each = var.cloud-configmap

  metadata {
    name = each.value.name
    namespace = each.value.namespace
  }

  data = {
    "${each.value.data-keyname}" = data.http.config-map[each.key].body
  }
}

variables.tf

variable "cloud-configmap" {
  type = map(object({
    url = string
    name = string
    namespace = string
    data-keyname = string
  }))
  default = {
    "cm1" = {
      url = "someurl.com/file1.yaml"
      name = "cm-name"
      namespace = "test"
      data-keyname = "file1.yml"
    },
    "cm2" = {
      url = "someurl.com/file2.yaml"
      name = "cm-name2"
      namespace = "default"
      data-keyname = "file2.yml"
    }
  }
}

지금까지이 코드는 작동하지만 variables.tf 파일을 다음과 같이 변경하고 싶습니다.

variable "cloud-configmap" {
  type = map(object({
    name = string
    namespace = string
    cm-files = list(object({
      url = string
      data-keyname = string 
    }))
  }))
  default = {
    "cm1" = {
      name = "cm-name"
      namespace = "testnamespace"
      cm-files = [{
        url = "someurl.com/file1.yaml"
        data-keyname = "file1.yml"
      },
      {
        url = "someurl.com/file2.yaml"
        data-keyname = "file2.yml"
      }]
    },
    "cm2" = {
      name = "cm-name2"
      namespace = "default"
      cm-files = [{
        url = "someurl.com/file3.yaml"
        data-keyname = "file3.yml"
      },
      {
        url = "someurl.com/file4.yaml"
        data-keyname = "file4.yml"
      }]
    }
  }
}

그리고이 변경 후에는 중첩 된 개체 cm- 파일 목록을 반복하여 데이터 필드에 여러 키-값 쌍이있는 configmap을 만드는 방법을 모릅니다 . 어떤 도움이나 조언을 주시면 감사하겠습니다!

타일러

여기에 중첩 된 for 루프를 사용하여 꽤 많이 할 것입니다. 다음은 변수 제약 조건을 고려하여 제가 생각해 낼 수 있었던 것입니다.

  • variables.tf원래 질문에서 원하는 상태로 업데이트하십시오 . 이 솔루션은 해당 입력을 요구 사항으로 사용했습니다.

  • http자원을 이것으로 업데이트하십시오 . 이것은 terraform plan더미 URL이고 Terraform이이 리소스를 빌드 할 때 요청을 시도하기 때문에 초기에 실패합니다 . URL이 어떻게 보이는지 테스트하는 좋은 방법 locals {}은이 스 니펫에 있는 샘플 블록입니다. 이 지역 블록은 필요하지 않지만 URL이 생성되는 방법을 보여줍니다.

data "http" "config-map" {
  for_each = toset(flatten([
    for cm in var.cloud-configmap : [
      for cm-file in cm.cm-files :
        cm-file.url
    ]
  ]))

  url = format("https://%s", each.key)

  request_headers = {
    Accept = "text/plain"
  }
}

# EXAMPLE showing how the URLs are created
locals {
  urls = toset(flatten([
    for cm in var.cloud-configmap : [
      for cm-file in cm.cm-files :
        format("https://%s", cm-file.url)
    ]
  ]))
}
output "urls" { value = local.urls }
  • kubernetes_config_map리소스를 다음으로 업데이트하십시오 .
resource "kubernetes_config_map" "configmap" {
  for_each = var.cloud-configmap

  metadata {
    name = each.value.name
    namespace = each.value.namespace
  }

  data = {
    for cm-file in each.value.cm-files :
      cm-file.url => cm-file.data-keyname
  }
}

이러한 각 경우에서 for 루프를 사용하고 httpfor_each가 for와 중첩되는 경우에 유의하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Terraform의 중첩 된 블록 내에서 반복하는 방법

분류에서Dev

jsx 반응에서 중첩 된 객체를 반복하는 방법

분류에서Dev

일반 배열을 부모 객체에 중첩 된 중첩 객체로 변환하는 방법

분류에서Dev

자바 스크립트에서 중첩 된 객체 배열을 반복하는 방법

분류에서Dev

파이썬에서 가장 높은 합계를 가진 중첩 된 객체 목록을 인쇄하는 방법

분류에서Dev

응답 객체에서 중첩 된 값을 얻는 방법

분류에서Dev

중첩 된 객체 목록이있는 객체 목록을 JSON.NET에서 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

중첩 된 객체 JSON을 통해 * ngFor로 반복하는 방법

분류에서Dev

vue 2에서 객체 배열과 중첩 된 객체를 반복하는 방법

분류에서Dev

중첩 된 JSON을 SpringBoot에서 객체 모델에 매핑하는 방법

분류에서Dev

Terraform : 목록 내 중첩 된 맵 목록에서 값을 선택하는 방법은 무엇입니까?

분류에서Dev

Python GAE에서 중첩 된 StructuredProperty 객체의 값을 설정하는 방법

분류에서Dev

React Native Flatlist-중첩 된 객체를 반복하는 방법

분류에서Dev

Terraform은 중첩 된 개체 및 목록을 반복합니다.

분류에서Dev

for 루프를 사용하여 Python에서 중첩 된 목록을 반복하는 방법

분류에서Dev

Realm에 중첩 된 객체 목록을 추가하는 방법 "오류 : JS 값은 유형이어야합니다 : 객체"

분류에서Dev

mongoDB 객체에서 반복 된 값을 인쇄하는 방법

분류에서Dev

중첩 된 객체를 반복하고 jsx 내부에서 렌더링하는 방법은 무엇입니까?

분류에서Dev

파이썬의 중첩 된 루프에서 목록을 한 번만 반복하는 방법

분류에서Dev

중첩 된 json 배열에서 특정 객체 값을 얻는 방법

분류에서Dev

MongoDB 쿼리 : 중첩 된 객체 내에서 문자열을 찾는 방법

분류에서Dev

mongodb에서 중첩 된 객체를 쿼리하는 방법

분류에서Dev

중첩 된 Firebase DB의 중첩 된 객체 배열을 정렬하는 방법

분류에서Dev

Javascript에서 중첩 된 객체를 반복하는 방법은 무엇입니까?

분류에서Dev

객체 배열 내부에 중첩 된 배열을 설정하는 방법

분류에서Dev

TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

분류에서Dev

TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

분류에서Dev

NodeJS에서 중첩 된 객체 반복

분류에서Dev

중첩 된 개체 목록을 맵으로 줄이는 방법

Related 관련 기사

  1. 1

    Terraform의 중첩 된 블록 내에서 반복하는 방법

  2. 2

    jsx 반응에서 중첩 된 객체를 반복하는 방법

  3. 3

    일반 배열을 부모 객체에 중첩 된 중첩 객체로 변환하는 방법

  4. 4

    자바 스크립트에서 중첩 된 객체 배열을 반복하는 방법

  5. 5

    파이썬에서 가장 높은 합계를 가진 중첩 된 객체 목록을 인쇄하는 방법

  6. 6

    응답 객체에서 중첩 된 값을 얻는 방법

  7. 7

    중첩 된 객체 목록이있는 객체 목록을 JSON.NET에서 역 직렬화하는 방법은 무엇입니까?

  8. 8

    중첩 된 객체 JSON을 통해 * ngFor로 반복하는 방법

  9. 9

    vue 2에서 객체 배열과 중첩 된 객체를 반복하는 방법

  10. 10

    중첩 된 JSON을 SpringBoot에서 객체 모델에 매핑하는 방법

  11. 11

    Terraform : 목록 내 중첩 된 맵 목록에서 값을 선택하는 방법은 무엇입니까?

  12. 12

    Python GAE에서 중첩 된 StructuredProperty 객체의 값을 설정하는 방법

  13. 13

    React Native Flatlist-중첩 된 객체를 반복하는 방법

  14. 14

    Terraform은 중첩 된 개체 및 목록을 반복합니다.

  15. 15

    for 루프를 사용하여 Python에서 중첩 된 목록을 반복하는 방법

  16. 16

    Realm에 중첩 된 객체 목록을 추가하는 방법 "오류 : JS 값은 유형이어야합니다 : 객체"

  17. 17

    mongoDB 객체에서 반복 된 값을 인쇄하는 방법

  18. 18

    중첩 된 객체를 반복하고 jsx 내부에서 렌더링하는 방법은 무엇입니까?

  19. 19

    파이썬의 중첩 된 루프에서 목록을 한 번만 반복하는 방법

  20. 20

    중첩 된 json 배열에서 특정 객체 값을 얻는 방법

  21. 21

    MongoDB 쿼리 : 중첩 된 객체 내에서 문자열을 찾는 방법

  22. 22

    mongodb에서 중첩 된 객체를 쿼리하는 방법

  23. 23

    중첩 된 Firebase DB의 중첩 된 객체 배열을 정렬하는 방법

  24. 24

    Javascript에서 중첩 된 객체를 반복하는 방법은 무엇입니까?

  25. 25

    객체 배열 내부에 중첩 된 배열을 설정하는 방법

  26. 26

    TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

  27. 27

    TypeScript에서 개체에 중첩 된 개체를 반복하는 방법

  28. 28

    NodeJS에서 중첩 된 객체 반복

  29. 29

    중첩 된 개체 목록을 맵으로 줄이는 방법

뜨겁다태그

보관