簡體   English   中英

terraform 模塊取決於 Azure

[英]terraform module depends_on Azure

我正在使用 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}"

我不知道這是否可行,但我建議嘗試幫助 TF 構建正確的依賴關系圖。 我會讓 keyvault id 在你的模塊中成為一個變量。 這樣,當您使用模塊時,您將顯式調用 keyvault,這應該會在模塊執行之前觸發它被創建。

 module "mysql" {
     source      = "./../modules/mysql/"
     keyvault_id = "${module.keyvault.id}"                    
 }

這將需要您的 mysql 模塊將 keyvault_id 作為變量並使用它而不是數據資源。 它還需要您的 keyvault 模塊到 output 的 keyvault id。 同樣,這可能行不通,但我認為它會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM