找不到变量 'azurerm_sql_server.sql_server.name' 的资源 'azurerm_sql_server.sql_server'
Resource 'azurerm_sql_server.sql_server' not found for variable 'azurerm_sql_server.sql_server.name'
我用 enable/disable 选项和 var.sql_server_enable
创建了 sql,但我遇到了输出问题。如果 var.sql_server_enable
是 0
,azurerm_sql_server.sql_server.name
将是 null
,我得到以下错误。
resource "azurerm_sql_server" "sql_server" {
count = "${var.sql_server_enable ? 1 : 0}"
name = "${var.sql_server_name}"
resource_group_name = "${var.sql_server_resource_group_name}"
location = "${var.sql_server_location}"
version = "${var.sql_server_version}"
administrator_login = "${var.sql_server_admin_user}"
administrator_login_password = "${var.sql_server_admin_pass}"
}
output "sql_server_name_output" {
value = "${var.sql_server_enable == "1" ? azurerm_sql_server.sql_server.name : var.null }"
}
Error: Error running plan: 1 error occurred:
* module.hello.module.azure_sql_server_hello_staging.output.sql_server_name_output: Resource 'azurerm_sql_server.sql_server' not found for variable 'azurerm_sql_server.sql_server.name'
你可以输出
value = "${var.sql_server_enable ? azurerm_sql_server.sql_server[0].name : var.null }"
。当您应用 terraform 时,当您输入变量 "sql_server_enable".
的值时,您可以键入“1”表示真,“0”表示假
这对我适用于 Terraform v0.12.6 + provider.azurerm v1.32.1,如果需要,您可以 upgrade it。
variable "sql_server_enable" {
type = bool
}
variable "null" {
default = "this is empty"
}
resource "azurerm_sql_server" "sql_server" {
count = "${var.sql_server_enable ? 1 : 0}"
name = "mysqlserver123qaz"
resource_group_name = "${azurerm_resource_group.test.name}"
location = "${azurerm_resource_group.test.location}"
version = "12.0"
administrator_login = "mradministrator"
administrator_login_password = "thisIsDog11"
}
output "sql_server_name_output" {
value = "${var.sql_server_enable ? azurerm_sql_server.sql_server[0].name : var.null }"
}
结果1
结果2
希望对您有所帮助。
感谢您的回答,但 sql_server_name_output
变量在另一个模块上使用。它需要 string
值。然后我使用 var.null
而不是 null
。在我听从你的建议后,我在下面收到另一个错误。您还有其他建议吗?
Error: Inconsistent conditional result types
on ../modules/azure_sql_server/output.tf line 9, in output "sql_server_name_output":
9: value = "${var.sql_server_enable ? azurerm_sql_server.sql_server[*].name : var.null }"
|----------------
| azurerm_sql_server.sql_server is tuple with 1 element
| var.null is "null"
| var.sql_server_enable is true
需要 azurerm_sql_server.sql_server
的其他资源如下。
resource "azurerm_sql_firewall_rule" "sql_firewall_rule" {
count = "${var.sql_fw_enable == "1" ? 1 : 0}"
name = "${var.sql_fw_rule_name}"
resource_group_name = "${var.sql_fw_rule_resource_group_name}"
server_name = "${azurerm_sql_server.sql_server}"
start_ip_address = "${var.sql_fw_rule_start_ip}"
end_ip_address = "${var.sql_fw_rule_end_ip}"
}
我用 enable/disable 选项和 var.sql_server_enable
创建了 sql,但我遇到了输出问题。如果 var.sql_server_enable
是 0
,azurerm_sql_server.sql_server.name
将是 null
,我得到以下错误。
resource "azurerm_sql_server" "sql_server" {
count = "${var.sql_server_enable ? 1 : 0}"
name = "${var.sql_server_name}"
resource_group_name = "${var.sql_server_resource_group_name}"
location = "${var.sql_server_location}"
version = "${var.sql_server_version}"
administrator_login = "${var.sql_server_admin_user}"
administrator_login_password = "${var.sql_server_admin_pass}"
}
output "sql_server_name_output" {
value = "${var.sql_server_enable == "1" ? azurerm_sql_server.sql_server.name : var.null }"
}
Error: Error running plan: 1 error occurred:
* module.hello.module.azure_sql_server_hello_staging.output.sql_server_name_output: Resource 'azurerm_sql_server.sql_server' not found for variable 'azurerm_sql_server.sql_server.name'
你可以输出
value = "${var.sql_server_enable ? azurerm_sql_server.sql_server[0].name : var.null }"
。当您应用 terraform 时,当您输入变量 "sql_server_enable".
这对我适用于 Terraform v0.12.6 + provider.azurerm v1.32.1,如果需要,您可以 upgrade it。
variable "sql_server_enable" {
type = bool
}
variable "null" {
default = "this is empty"
}
resource "azurerm_sql_server" "sql_server" {
count = "${var.sql_server_enable ? 1 : 0}"
name = "mysqlserver123qaz"
resource_group_name = "${azurerm_resource_group.test.name}"
location = "${azurerm_resource_group.test.location}"
version = "12.0"
administrator_login = "mradministrator"
administrator_login_password = "thisIsDog11"
}
output "sql_server_name_output" {
value = "${var.sql_server_enable ? azurerm_sql_server.sql_server[0].name : var.null }"
}
结果1
感谢您的回答,但 sql_server_name_output
变量在另一个模块上使用。它需要 string
值。然后我使用 var.null
而不是 null
。在我听从你的建议后,我在下面收到另一个错误。您还有其他建议吗?
Error: Inconsistent conditional result types
on ../modules/azure_sql_server/output.tf line 9, in output "sql_server_name_output":
9: value = "${var.sql_server_enable ? azurerm_sql_server.sql_server[*].name : var.null }"
|----------------
| azurerm_sql_server.sql_server is tuple with 1 element
| var.null is "null"
| var.sql_server_enable is true
需要 azurerm_sql_server.sql_server
的其他资源如下。
resource "azurerm_sql_firewall_rule" "sql_firewall_rule" {
count = "${var.sql_fw_enable == "1" ? 1 : 0}"
name = "${var.sql_fw_rule_name}"
resource_group_name = "${var.sql_fw_rule_resource_group_name}"
server_name = "${azurerm_sql_server.sql_server}"
start_ip_address = "${var.sql_fw_rule_start_ip}"
end_ip_address = "${var.sql_fw_rule_end_ip}"
}