If statement terraform中的If语句,使用2个不同的代码块
我有这个代码块If statement terraform中的If语句,使用2个不同的代码块,if-statement,terraform,If Statement,Terraform,我有这个代码块 launchpad_tmpl = { apiVersion = "<Link for the API>" kind = "mke" spec = { mke = { adminUsername = "admin" adminPassword = var.admin_password installFlags :
launchpad_tmpl = {
apiVersion = "<Link for the API>"
kind = "mke"
spec = {
mke = {
adminUsername = "admin"
adminPassword = var.admin_password
installFlags : [
"--default-node-orchestrator=kubernetes",
"--san=${module.masters.lb_dns_name}",
]
}
hosts = concat(local.managers, local.msrs, local.workers, local.windows_workers)
}
}
}
launchpad_tmpl = {
apiVersion = "<Some link for the API>"
kind = "mke"
spec = {
mke = {
adminUsername = "admin"
adminPassword = var.admin_password
installFlags : [
"--default-node-orchestrator=kubernetes",
"--san=${module.masters.lb_dns_name}",
]
}
msr = {
...some_code
}
hosts = concat(local.managers, local.msrs, local.workers, local.windows_workers)
}
}
}
这是按如下方式放置时的输出:
mke_launchpad_tmpl = {
apiVersion = "API"
kind = "mke"
spec = {
mke = {
adminUsername = "admin"
adminPassword = var.admin_password
installFlags : [
"--default-node-orchestrator=kubernetes",
"--san=${module.masters.lb_dns_name}",
]
}
hosts = concat(local.managers, local.msrs, local.workers, local.windows_workers)
}
}
msr_launchpad_tmpl = {
apiVersion = "API"
kind = "mke+msr"
spec = {
mke = {
adminUsername = "admin"
adminPassword = var.admin_password
installFlags : [
"--default-node-orchestrator=kubernetes",
"--san=${module.masters.lb_dns_name}",
]
}
msr = {
installFlags : [
"--ucp-insecure-tls",
"--dtr-external-url ${module.msrs.lb_dns_name}",
]
}
hosts = concat(local.managers, local.msrs, local.workers, local.windows_workers)
}
}
launchpad_tmpl = var.msr_count > 0 ? local.msr_launchpad_tmpl : local.mke_launchpad_tmpl
}
output "mke_cluster" {
value = yamlencode(local.launchpad_tmpl)
}
你可以用。同样为了简单起见,您可以将这两个备选方案创建为局部变量,这将简化表达式
例如:
locals {
mke_launchpad_tmpl = {
apiVersion = "API"
kind = "mke"
spec = {
mke = {
adminUsername = "admin"
adminPassword = var.admin_password
installFlags : [
"--default-node-orchestrator=kubernetes",
"--san=${module.masters.lb_dns_name}",
]
}
msr = {}
hosts = concat(local.managers, local.msrs, local.workers, local.windows_workers)
}
}
msr_launchpad_tmpl = {
apiVersion = "API"
kind = "mke+msr"
spec = {
mke = {
adminUsername = "admin"
adminPassword = var.admin_password
installFlags : [
"--default-node-orchestrator=kubernetes",
"--san=${module.masters.lb_dns_name}",
]
}
msr = {
installFlags : [
"--ucp-insecure-tls",
"--dtr-external-url ${module.msrs.lb_dns_name}",
]
}
hosts = concat(local.managers, local.msrs, local.workers, local.windows_workers)
}
}
}
然后,在您的资源中:
launchpad_tmpl = var.msr_count > -1 ? local.second_launchpad_tmpl : local.first_launchpad_tmpl
请让我检查一下,谢谢。嘿,我听了你的回答似乎有些不好。编辑我的questions@SemyonKolesnikov我没有看到任何新的错误消息?@SemyonKolesnikov您的
mke_launchpad_tmpl
和mke_launchpad_tmpl
有不同的形式。我更新了答案,使它们具有某种形式。@SemyonKolesnikov这将使这两个变量显示相同的形式,但值不同。条件需要这样做,这可能会令人困惑。
launchpad_tmpl = var.msr_count > -1 ? local.second_launchpad_tmpl : local.first_launchpad_tmpl