terraform 模块依赖于 Azure
Posted
技术标签:
【中文标题】terraform 模块依赖于 Azure【英文标题】:terraform module depends_on Azure 【发布时间】:2020-03-17 23:11:24 【问题描述】:我正在使用 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"
【问题讨论】:
我会单独配置密钥保管库等,并使用它们自己的状态,然后只需使用保管库传递秘密等。我就是这么做的,如果你想让我告诉你怎么做,请告诉我 @Naim 感谢您的回答,但在这种情况下,我必须维护 2 个单独的状态文件。我想要一个单一的状态文件,所有基础设施都应该提供。请出示您的代码 嗨***.com/users/10870934/vijay-verma,如果您可以编辑您的问题以显示mysql模块,我可以快速编写代码示例来回答您的需求 如何为模块实现depends_on见medium.com/mineiros/… 【参考方案1】:我不知道这是否可行,但我建议尝试帮助 TF 构建正确的依赖关系图。我会让 keyvault id 在你的模块中成为一个变量。这样,当您使用模块时,您将显式调用 keyvault,这应该会在模块执行之前触发它被创建。
module "mysql"
source = "./../modules/mysql/"
keyvault_id = "$module.keyvault.id"
这将要求您的 mysql 模块将 keyvault_id 作为变量并使用它而不是数据资源。它还需要您的 keyvault 模块输出 keyvault id。同样,这可能行不通,但我认为它会。
【讨论】:
感谢您的回答,我将 azurerm_key_vault_secret 也称为 MySQL 块中的数据源。在这种情况下,如何填充秘密值。数据“azurerm_key_vault_secret”“用户列表”名称=“mysqladminun”key_vault_id=“$data.azurerm_key_vault.keyvault.id”administrator_login=“mysqladminun”administrator_login_password=“$azurerm_key_vault_secret.userlist.value”版本=“5.7 "` 您应该可以在那里调用秘密,因为您将通过 id 传递它。如果密钥库存在,那么密钥应该正确吗? 谢谢我正在粘贴演示代码,你可以检查下面的代码:codeshare.io/5zWB4O以上是关于terraform 模块依赖于 Azure的主要内容,如果未能解决你的问题,请参考以下文章