Terraform v0.13 - 检查是否提供了密码或密码,如果没有则使用随机生成的
Terraform v0.13 - Check if password or secret provided, use a randomly generated one if not
我正在努力微调我的一些 Terraform 模块,特别是围绕 google_compute_vpn_tunnel, google_compute_router_interface, and google_compute_router_peer 资源。我想做类似AWS的事情,预共享密钥和隧道接口IP地址默认是随机的,但可以被用户覆盖(前提是在一定范围内)。
随机选项工作正常。例如,要创建一个 20 个字符的随机密码,我这样做:
resource "random_password" "RANDOM_PSK" {
length = 20
special = false
}
但是,如果未定义名为 vpn_shared_secret 的输入变量,我只想使用此值。似乎这样应该可行:
variable "vpn_shared_secret" {
type = string
default = null
}
locals {
vpn_shared_secret = try(var.vpn_shared_secret, random_password.RANDOM_PSK.result)
}
resource "google_compute_vpn_tunnel" "VPN_TUNNEL" {
shared_secret = local.vpn_shared_secret
}
相反,它似乎忽略了 vpn_shared_secret 输入变量,每次都使用随机生成的变量。
try() 是执行此操作的正确方法吗?我刚刚在学习 Terraform if/else 和地图语句。
coalesce()
函数怎么样?
locals {
vpn_shared_secret = coalesce(var.vpn_shared_secret, random_password.RANDOM_PSK.result)
}
我正在努力微调我的一些 Terraform 模块,特别是围绕 google_compute_vpn_tunnel, google_compute_router_interface, and google_compute_router_peer 资源。我想做类似AWS的事情,预共享密钥和隧道接口IP地址默认是随机的,但可以被用户覆盖(前提是在一定范围内)。
随机选项工作正常。例如,要创建一个 20 个字符的随机密码,我这样做:
resource "random_password" "RANDOM_PSK" {
length = 20
special = false
}
但是,如果未定义名为 vpn_shared_secret 的输入变量,我只想使用此值。似乎这样应该可行:
variable "vpn_shared_secret" {
type = string
default = null
}
locals {
vpn_shared_secret = try(var.vpn_shared_secret, random_password.RANDOM_PSK.result)
}
resource "google_compute_vpn_tunnel" "VPN_TUNNEL" {
shared_secret = local.vpn_shared_secret
}
相反,它似乎忽略了 vpn_shared_secret 输入变量,每次都使用随机生成的变量。
try() 是执行此操作的正确方法吗?我刚刚在学习 Terraform if/else 和地图语句。
coalesce()
函数怎么样?
locals {
vpn_shared_secret = coalesce(var.vpn_shared_secret, random_password.RANDOM_PSK.result)
}