gpt4 book ai didi

azure - Terraform 模块输出无法解析其他模块中的输入变量

转载 作者:行者123 更新时间:2023-12-03 04:14:19 25 4
gpt4 key购买 nike

Terraform 版本

Terraform v0.11.11
+ provider.azurerm v1.21.0

Terraform 配置文件

为了简洁起见,我留下了许多必填字段(在添加连接字符串之前所有其他配置都有效)。

# modules/function/main.tf

variable "conn-value" {}
locals {
conn = "${map("name", "mydb", "value", "${var.conn-value}", "type", "SQLAzure")}"
}
resource "azurerm_function_app" "functions" {
connection_string = "${list(local.conn)}"
# ...
}

# modules/db/main.tf

# ... other variables declared

resource "azurerm_sql_server" "server" {
# ...
}

output "connection-string" {
value = "Server=tcp:${azurerm_sql_server.server.fully_qualified_domain_name},1433;Initial Catalog=${var.catalog};Persist Security Info=False;User ID=${var.login};Password=${var.login-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=200;"
}

# main.tf

module "my_db" {
source = "modules/db"
}

module "my_app" {
source = "modules/function"
conn-value = "${module.my_db.connection-string}"
# ...
}

terraform plan 的预期行为

module.my_db.connection-string 输出在传递给 my_app conn-value 变量时解析为字符串,并且能够在传递给 azurerm_function_app.functions.connection_string 变量的映射/列表中使用。

terraform 计划的实际行为

我收到此错误:

module.my_app.azurerm_function_app.functions: connection_string: should be a list

如果我将 modules/function/main.tf locals 中的 "${var.conn-value}" 替换为字符串,它有效。

更新

对此的回应comment ,我用连接字符串构造更新了上面的脚本。

最佳答案

我终于找到了GitHub issue引用了我遇到的问题(我通过这个 gist comment 发现了这个问题)。这准确地描述了问题:

Assigning values to nested blocks is not supported, but appears to work in certain cases due to a number of coincidences...

此限制在 <= v0.11 中,但显然是 fixed在 v0.12 中使用 dynamic block 。

关于azure - Terraform 模块输出无法解析其他模块中的输入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54498947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com