azure - 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 plan
我收到此错误:
module.my_app.azurerm_function_app.functions: connection_string: should be a list
如果我只用一个字符串替换"${var.conn-value}"
它modules/function/main.tf
locals
,它就可以工作。
更新
针对此评论,我使用连接字符串构造更新了上面的脚本。
解决方案
我终于找到了引用我遇到的问题的GitHub 问题(我通过这个要点评论找到了问题)。这准确地描述了这个问题:
不支持为嵌套块分配值,但由于一些巧合,在某些情况下似乎可以工作......
此限制在 <= v0.11 中,但显然在 v0.12 中与块一起修复。dynamic
推荐阅读
- javascript - 我目前在获取从 php 代码生成的类值时遇到问题
- laravel - 无法使用 Laravel 5.6 检索查询字符串参数值
- python - 如何按值过滤 nusted 列表对象?
- python - 无效的表达式/缺少组名
- scala - 如何在 Kafka 字数统计程序中修改 KStream 键和值?
- jenkins - 针对开放 PR 提交的 Jenkins web-hook 触发器
- android - Android Studio 调试器只工作一次
- c# - c#替换՛字符
- django - 如何使用 SQS 代理监控 celery 中的任务?
- node.js - NestJS REST API 因长时间运行的请求而超时