Terraform - Azure如何获取部署webhook URL

sycxhyv7  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(128)

使用hashicorp/azurerm提供程序,我想设置一个webhook来触发部署。
我有一个Web应用程序,在重启时加载最新的Docker镜像。然而,**我需要一个scmUri**的资源来设置webhook:

resource "azurerm_linux_web_app" "web" {
  app_settings = {
    DOCKER_REGISTRY_SERVER_URL      = url
    DOCKER_REGISTRY_SERVER_USERNAME = data.azurerm_key_vault_secret.acr-service-principal-id.value
    DOCKER_REGISTRY_SERVER_PASSWORD = data.azurerm_key_vault_secret.acr-service-principal-password.value
    ...
  }
  ...
}

resource "azurerm_container_registry_webhook" "webhook" {
  service_uri = "<scm URL of the azurerm_linux_web_app.web>/docker/hook"
  ...
}

我已经找到了一种方法来查询scmUri使用各种其他语言.但是没有使用azurepm提供程序:

在部署完所有内容后,我也可以从Azure手动复制scmUri,但我更喜欢完全自动化的设置:

neekobn8

neekobn81#

这就是我的工作:

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.28.0"
    }
    azapi = {
      source  = "Azure/azapi"
      version = "1.2.0"
    }
  }
}

...

resource "azurerm_linux_web_app" "web" {
  name                = "my-webapp"
  app_settings = {
    DOCKER_ENABLE_CI = "true"
    DOCKER_REGISTRY_SERVER_URL : "*****"
    WEBSITES_PORT : "8080"
  }
  ... # other settings
}

resource "azurerm_container_registry_webhook" "webhook" {
  service_uri         = "https://${azurerm_linux_web_app.web.site_credential.0.name}:${azurerm_linux_web_app.web.site_credential.0.password}@${azurerm_linux_web_app.web.name}.scm.azurewebsites.net/api/registry/webhook"
  location            = "*****"
  registry_name       = "*****"
  name                = "${replace(azurerm_linux_web_app.web.name, "/-|_|\\W/", "")}hook" # only alphanumeric characters allowed
  actions             = ["push"]
  resource_group_name = "*****"
}

service_uri与问题下的评论中的URL有点不同(因此请确保检查您的webhook URL在Web应用程序的部署中心部分中的外观),我不得不使用.web.site_credential.0.name而不是.web.site_credential.0.username来访问正确的属性。

相关问题