변수 내 테라폼 변수
우선 - 죄송합니다 - 테라폼을 처음 사용합니다. (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"
이 경우는 만약 값이 같다면 이다. 그렇지 않으면
'개발하자' 카테고리의 다른 글
플러터 파이어베이스: Stream provider를 사용하여 로그인한 사용자의 세부 정보를 앱 전체에 스트리밍하고 싶습니다 (0) | 2023.10.06 |
---|---|
pip은 mac에서 "pip이 TLS/SSL이 필요한 위치로 구성되어 있지만 python의 ssl 모듈을 사용할 수 없습니다."라는 오류를 표시합니다 (0) | 2023.10.05 |
Svelte - 액세스 하위 구성 요소의 메서드 (0) | 2023.10.04 |
Jupyter 노트북 새 셀 유형 기본값 (0) | 2023.10.04 |
나중을 위해 주피터(IPython) 노트북 세션을 절이거나 저장하는 방법 (0) | 2023.10.03 |