개발하자

테라폼 콘솔에서 로컬 변수 가져오기

Cuire 2023. 3. 6. 15:23
반응형

테라폼 콘솔에서 로컬 변수 가져오기

테라폼 콘솔 내에서 로컬 변수를 가져올 수 있는 방법이 있나요?

> local.name
unknown values referenced, can't compute value

Terraform 콘솔에서는 입력 변수와 모듈 출력 변수만 확인할 수 있는 것 같습니다.

> var.in
2

> module.abc.out
3

구성 파일 예:

# main.tf

locals {
  name = 1
}

variable "in" {
  value = 2
}

module "abc" {
  source "path/to/module"
}

# path/to/module/main.tf

output "out" {
  value = 3
}



유감스럽게도 Terraform v0.11.x에서는 이 기능이 지원되지 않는 것으로 보이지만, 이 문제 티켓에 설명된 대로 v0.12에서 제공될 예정입니다:

https://github.com/hashicorp/terraform/issues/18413

HTH!




이것은 최근 Terraform 릴리즈에서 작동할 것입니다.

$ terraform version
Terraform v1.0.5

$ terraform console
> local.name
1
> var.in
2

그리고 예를 들어 Bash를 사용하여 (비상호작용적으로) 사용할 수 있습니다.

$ terraform console <<<local.name
1

이것은 사용자 지정 도구에 매우 유용할 수 있으며 심지어 상당히 정교할 수도 있습니다.

$ terraform console <<<terraform.workspace
"default"

$ terraform console <<<local.credentials[local.stack].username
"user1234"

테스트된 'main.tf'

locals {
  name = 1
  stack = terraform.workspace
  credentials={ 
    default: {username:"user1234",password:"1234",endpoint:"http://localhost"}
  }
}

variable in {
  default = 2
}



오늘(2021년 12월)에도 여전히 테라폼 콘솔이 없습니다

하지만, 만약 당신이 적절하다고 생각한다면, 당신은 그곳에 가서 찬성표를 던질 수도 있다.

나는 단지 목록에서 몇 가지 항목을 얻고 싶었다.

첫 번째 항목은 기능을 사용하여 이렇게 할 수 있습니다.

element(["apple", "banana", "pine apple", "grape", "strawberry"], 0)

나는 "사과"를 돌려받았다.

그리고 마지막 아이템을 원한다면 기능을 사용하여 다음을 수행해야 합니다

element(["apple", "banana", "pine apple", "grape", "strawberry"], 
length(["apple", "banana", "pine apple", "grape", "strawberry"])-1)

"딸기"를 돌려받습니다.

여기에 코드 반복이 있기 때문에, 저는 변수를 정의하고 사용하기 위해 이런 것을 찾고 있었습니다.

var fruits = ["apple", "banana", "pine apple", "grape", "strawberry"]
element(fruits, length(fruits)-1)

.

그래서 저는 main.tf이라는 파일에서 변수를 다음과 같이 정의하게 되었습니다.

variable fruits {
  default = ["apple", "banana", "pine apple", "grape", "strawberry"]
}

테라폼 콘솔이 시작되었습니다.

이제 다음과 같이 사용할 수 있습니다.

element(var.fruits, length(var.fruits)-1)

몇 가지 관련 예를 살펴보십시오


반응형