본문 바로가기

개발하자

변수 내 테라폼 변수

반응형

변수 내 테라폼 변수

우선 - 죄송합니다 - 테라폼을 처음 사용합니다. (3시간 만에!).

나는 다른 변수의 선언 안에 있는 변수의 값을 사용하려고 한다.

아래는 제 코드입니다. 제가 뭘 잘못하고 있는 걸까요?

변수들.tf:

variable "EnvironmentName" {
    type = "string"
}
variable "tags" {
    type = "map"
    default = {
        Environment = "${var.EnvironmentName}"
        CostCentre = "C1234"
        Project = "TerraformTest"
        Department = "Systems"
    }
}

variables-dev.tf 변수:

EnvShortName = "Dev"
EnvironmentName = "Development1"
#Location
Location = "westeurope"

main.tf :

resource “azurerm_resource_group” “TestAppRG” {
    name = “EUW-RGs-${var.EnvShortName}”
    location = “${var.Location}”
    tags = “${var.tags}”
}

다음 오류가 발생합니다:

오류: 변수 "tags"에서 variables.tf 행 18에 허용되지 않는 변수: 18: 환경 = "${var.EnvironmentName}" 변수를 사용할 수 없습니다.

오류 메시지가 상당히 설명력이 있다는 것을 이해하고 있으며 아마도 잘못된 것은 제 접근법일 것입니다. 하지만 다른 변수 맵의 정의에서 변수를 어떻게 사용해야 할까요? 이게 가능하긴 해?

나는 여러 자원을 세울 것이다 - 그래서 태그가 맵으로 구축되어 각 자원에 전달되기를 원한다 - 하지만 나는 또한 다른 tfvars 파일과 함께 맵을 재활용하여 다른 팀이 작업할 수 있도록 여러 인스턴스를 배치하고 싶다.




테라폼은 변수 내부의 변수를 지원하지 않습니다. 두 개 이상의 변수를 기반으로 값을 생성하려면 시도해 볼 수 있습니다.

다음과 같이 정의할 수 있습니다:

locals {
  tags = {
    Environment = "${var.EnvironmentName}"
    CostCentre  = "C1234"
    Project     = "TerraformTest"
    Department  = "Systems"
  }
}

그런 다음 다음을 사용하여 액세스할 수 있습니다:

resource “azurerm_resource_group” “TestAppRG” {
  name     = “EUW-RGs-${var.EnvShortName}”
  location = “${var.Location}”
  tags     = “${local.tags}”
}



지역 주민들을 이용해서 당신이 추구하는 것과 같은 변신을 해야 한다

변수들.tf:

variable "EnvironmentName" {
    type = "string"
}

locals.tf

locals {
  tags = {
      Environment = var.EnvironmentName
      CostCentre = "C1234"
      Project = "TerraformTest"
      Department = "Systems"
  }
}

variables-dev.tf 변수:

EnvShortName = "Dev"
EnvironmentName = "Development1"
#Location
Location = "westeurope"

main.tf :

resource “azurerm_resource_group” “TestAppRG” {
    name = “EUW-RGs-${var.EnvShortName}”
    location = var.Location
    tags = local.tags
}

' tags = merge'(local.tags, {"key"="value"})와 같은 작업을 수행하여 태그를 확장할 수 있습니다.




이 질문 외에도, ""를 어떻게 하는지에 대한 비슷한 질문에 대한 구글 요청에서 종종 언급되었듯이, 여기 그러한 요청에 유용하고 관련될 수 있는 방법이 있다.

특정 모듈에 대해 변경할 수 없는 상수 var가 하나 있고(예를 들어), 해당 변수 값을 기준으로 0 또는 1의 다른 로컬 값을 가져야 할 경우, 다른 값을 기준으로 하는 일종의 스위치가 필요합니다. 이를 위해 필요한 작업을 수행해야 합니다:

env_prefix = var.env == "dev" ? "np" : "pd"

이 경우는 만약 값이 같다면 이다. 그렇지 않으면


반응형