尝试映射SQL查询的结果。这在我看来是正确的,但是terraform会返回一个错误。
它不返回IP和服务器名称的任何空白结果。
哪里有窃听器吗?在我看来是对的。
我有main.tf
/*
* admin database
*/
module "sql-servers-admindb" {
source = "../terraform-modules/terraform-data-db"
dbtype = "mysql"
connection = {
mysql = {
host = local.mysql-admin_credentials.dbhost
user = local.mysql-admin_credentials.dbuser
pass = local.mysql-admin_credentials.dbpass
dbase = local.mysql-admin_credentials.dbname
}
sqlite = null
}
debugfile = "debug.json"
query = {
sqlquery = <<EOT
SELECT sd.serwer_id, sd.ip_local, sd.host_mysql
FROM serwer_panel sd
JOIN serwer_serwer_grupa ssg ON ssg.serwer_id = sd.serwer_id
JOIN serwer_grupa sg ON ssg.serwer_grupa_id = sg.id
EOT
}
}
module "terraform-sql" {
source = "../terraform-modules/terraform-sql"
depends_on = [module.sql-servers-admindb]
for_each = { for sql in module.sql-servers-admindb.result.sqlquery : sql.serwer_id => sql }
general = {
zone = "sql.${var.dns_local_name[local.environment]}."
ptr_networks = "${var.dns_local_reverse_allowed[local.environment]}"
}
}terraform-模块/terraform-sql/main.tf
// IP address and A record
module "sql-nsrecord_a" {
source = "../terraform-modules/terraform-generic-nsrecord
zone = "{var.general.zone}."
name = "${var.sql.serwer_id}."
type = "A"
records = [var.sql.local_ip]
ptr_networks = var.general.ptr_networks
}/*
* General
*/
variable "general" {
type = object({
zone = string
ptr_networks = list(any)
})
default = {
zone = ""
ptr_networks = []
}
}
/*
* SQL records
*/
variable "sql" {
type = map(any)
default = {}
}示例debug.json
Array
(
[sqlquery] => Array
(
[0] => Array
(
[serwer_id] => s12
[ip_local] => 127.0.0.1
[host_mysql] =>
)返回错误:
│ Error: Missing map element
│
│ on ../terraform-modules/terraform-sql/main.tf line 9, in module "sql-nsrecord_a":
│ 9: name = "${var.sql.serwer_id}."
│ ├────────────────
│ │ var.sql is empty map of dynamic
│
│ This map does not have an element with the key "serwer_id".
╵
╷
│ Error: Missing map element
│
│ on ../terraform-modules/terraform-sql/main.tf line 11, in module "sql-nsrecord_a":
│ 11: records = [var.sql.local_ip]
│ ├────────────────
│ │ var.sql is empty map of dynamic
│ 我正在征求关于如何改进它的意见。
发布于 2021-12-07 12:17:48
您似乎没有将变量sql传递给terraform-sql模块,因此使用了它的默认值:
default = {}因此有一张空地图。难怪它不包含一些条目。
你需要修改你的
module "terraform-sql" {
...
}传递sql参数。
https://stackoverflow.com/questions/70259816
复制相似问题