首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >terraform模块depends_on Azure

terraform模块depends_on Azure
EN

Stack Overflow用户
提问于 2019-11-22 06:33:48
回答 1查看 375关注 0票数 0

我正在使用terraform在Azure云中构建生产基础设施。我的要求如下。

应该首先提供Azure密钥库,因为我将从那里利用一个秘密。但由于terraform模块不支持depend_on。任何变通方法都是非常实用的。

代码语言:javascript
复制
     source    = "./../modules/azurekeyvault/"
     username =  "${var.username}"
     tags_environment    = "${var.tags_environment}"
   }

   module "mysql" {
     source                             = "./../modules/mysql/"
   }

Azure密钥库模块。

代码语言:javascript
复制
  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模块代码:

代码语言:javascript
复制
    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}"
EN

回答 1

Stack Overflow用户

发布于 2019-11-23 04:04:33

我不知道这是否有效,但我建议您尝试帮助TF构建正确的依赖关系图。我会让keyvault id成为你模块中的一个变量。这样,当您使用模块时,您将显式地调用keyvault,这应该会在模块执行之前触发它的创建。

代码语言:javascript
复制
 module "mysql" {
     source      = "./../modules/mysql/"
     keyvault_id = "${module.keyvault.id}"                    
 }

这将要求您的mysql模块将keyvault_id作为变量,并使用它而不是数据资源。它还需要您的keyvault模块输出keyvault id。再说一次,这可能不起作用,但我认为它会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58984760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档