【问题标题】:Azure DevOps: Connecting Terraform output to Azure web service JSON config?Azure DevOps:将 Terraform 输出连接到 Azure Web 服务 JSON 配置?
【发布时间】:2020-02-12 18:49:21
【问题描述】:

我正在尝试根据使用 Terraform 部署的资源来了解如何在我的 .NET Core Web 服务中更新 JSON 配置文件。

我有一个现有的 Azure DevOps 管道,该管道将 .NET Core Web 服务构建/部署到 Azure 应用服务。

在迁移到 Terraform 时,我将为开发/测试/生产环境创建 CosmosDb 数据库、Azure 搜索服务、事件网格等。

我可以在 Terraform 中创建这些,但我不清楚如何从这些资源中获取输出(如 CosmosDb 位置、密钥和数据库 ID)并将它们注入到我部署的 JSON 配置文件中网络服务。

有没有人做过这种事情,并且可以展示一个 Terraform 的例子?谢谢!

【问题讨论】:

  • 您好,您使用 Jamie 的解决方案是否成功?你还面临另一个问题吗?请随时在此处发表评论,以便我们继续提供帮助。
  • 谢谢梅林。我认为杰米的方法会奏效。很快就会尝试。但是,如果 Microsoft 对如何将 Terraform 与托管在 Azure App Services 上的 ASP.NET Core Web 服务或什至 K8s 等其他部署方法最好地集成有任何其他指导,那么有更多文档会很棒。

标签: azure-devops terraform-provider-azure


【解决方案1】:

您实际上并没有将它们注入到您的配置文件中,而是将它们设置为应用服务中的应用设置,这将覆盖配置文件中的这些键。

如果你有:

{
   CosmosDb: {
       Key: ""
   }
}

在您的 terraform 中,您将执行以下操作。

resource "azurerm_app_service" "test" {
  name                = "example-app-service"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"
  app_service_plan_id = "${azurerm_app_service_plan.test.id}"

  app_settings = {
      "CosmosDb:Key" = "${azurerm_cosmosdb_account.db.primary_master_key}"
  }
}

因此,您可以参考其他 Terraform 资源以提取您需要的值,并将其放入 Terraform 中应用服务的应用设置部分。

【讨论】:

  • 有趣的谢谢。因此,如果我在 appsettings.XYZ.json(每个环境)中有这种配置,并且我正在使用 ConfigurationBuilder.AddJsonFile,我可以在 app_settings 中使用 RepositorySettings:Location 吗?我想我不需要在单独的配置文件中使用这些,而只是将其作为 Terraform per-env 部署的一部分? "RepositorySettings": { "Location": "https://...documents.azure.com:443/", "Key": "...", "DatabaseId": ... }
  • 是的,没错。部署到 Azure 时,我们不使用应用设置文件。我们只使用应用服务中的应用设置。这样,如果您决定使用部署槽,则可以将它们与部署分开调整。
猜你喜欢
  • 2019-09-11
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2012-04-19
  • 1970-01-01
  • 2020-10-09
相关资源
最近更新 更多