我正在使用terraform在Azure云中构建生产基础设施。我的要求如下。
应该首先提供Azure密钥库,因为我将从那里利用一个秘密。但由于terraform模块不支持depend_on。任何变通方法都是非常实用的。
source = "./../modules/azurekeyvault/"
username = "${var.username}"
tags_environment = "${var.tags_environment}"
}
module "mysql" {
source = "./../modules/mysql/"
}Azure密钥库模块。
name = "${var.lsrkeyvault}"
location = "${data.azurerm_resource_group.lsr.location}"
resource_group_name = "${data.azurerm_resource_group.lsr.name}"
enabled_for_disk_encryption = true
tenant_id = "${data.azurerm_client_config.current.tenant_id}"
sku_name = "standard
resource "azurerm_key_vault_secret" "userlist" {
count = length(var.username)
name = "${var.username[count.index]}"
value = "${bcrypt(random_string.password.result)}"
key_vault_id = "${azurerm_key_vault.kvlsr.id}"
tags = {
environment = "${var.tags_environment}"
}
}Mysql模块代码:
name = "kyv-lsr-dev"
resource_group_name = "rgroup"
}
data "azurerm_key_vault_secret" "userlist" {
name = "mylab"
key_vault_id = "${data.azurerm_key_vault.keyvault.id}"发布于 2019-11-23 04:04:33
我不知道这是否有效,但我建议您尝试帮助TF构建正确的依赖关系图。我会让keyvault id成为你模块中的一个变量。这样,当您使用模块时,您将显式地调用keyvault,这应该会在模块执行之前触发它的创建。
module "mysql" {
source = "./../modules/mysql/"
keyvault_id = "${module.keyvault.id}"
}这将要求您的mysql模块将keyvault_id作为变量,并使用它而不是数据资源。它还需要您的keyvault模块输出keyvault id。再说一次,这可能不起作用,但我认为它会起作用。
https://stackoverflow.com/questions/58984760
复制相似问题