Terraform 脚本可禁用 Azure Function 应用程序中的多个功能

问题描述 投票:0回答:1

我想知道如何使用 terraform 脚本禁用 Azure Function 应用程序中的函数。

我在目录中有函数代码列表,我想从该目录调用这些函数并禁用 Azure Function 应用程序中的函数。另外,我需要在一个环境中禁用一些功能并保持其启用其余功能。如何实现这一目标?

我尝试过多种方法,但不知道如何实施。 我浏览了 terraform 文档,还有 PowerShell 脚本,但不确定如何使用 terraform 来实现它,因为我从未发现使用 terraform。另外,我预计在一个环境中应该禁用一些功能,而剩下的一些功能应该像之前一样启用。此外,在其他环境中应禁用所有功能。我正在寻找 terraform 脚本来实现这一目标。

感谢有人可以帮助编写脚本。另外,我是 Azure Functions 的新手。

terraform azure-functions azure-powershell terraform-provider-azure
1个回答
0
投票

我编写了一个 Terraform 脚本来禁用 Azure Function 应用程序中的多个功能,并且我能够成功配置要求。

当然!让我们分解需求并一一解决它们:

  1. 从目录部署 Azure Functions。
  2. 能够根据环境启用或禁用个别功能。

Terraform 可以管理资源,但它本身无法根据某些动态标准来决定启用或禁用哪些功能。为此,我们通常会使用 Terraform 变量和可能的本地执行配置程序或外部数据源的组合来执行脚本或其他代码以确定所需的状态。

为了简单起见,我将向您展示一个基本示例,说明如何使用 Terraform 部署 Azure Functions 并根据变量控制其状态。

我的地形配置:

main.tf:

provider "azurerm" {
    features {}
}

data "azurerm_resource_group" "example" {
  name     = "v-sakavya-Mindtree"
}

resource "azurerm_storage_account" "example" {
  name                     = "demovlsbstorageaccountvk"
  resource_group_name      = data.azurerm_resource_group.example.name
  location                 = data.azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

resource "azurerm_service_plan" "example" {
  name                = "vksb-appserviceplan"
  location            = data.azurerm_resource_group.example.location
  resource_group_name = data.azurerm_resource_group.example.name
  os_type             = "Windows"
  sku_name            = "P1v2"
}

resource "azurerm_windows_function_app" "example" {
  name                       = "vksbfunctapp"
  location                   = data.azurerm_resource_group.example.location
  resource_group_name        = data.azurerm_resource_group.example.name
  service_plan_id            = azurerm_service_plan.example.id
  storage_account_name       = azurerm_storage_account.example.name
  storage_account_access_key = azurerm_storage_account.example.primary_access_key

  site_config {}

  app_settings = {
    "AzureWebJobs.MyFunction.Disabled" = var.environment == "dev" ? "true" : "false"
  }
}

resource "azurerm_windows_function_app_slot" "example" {
  name                       = "examplevksbslot"
  function_app_id            = azurerm_windows_function_app.example.id
  storage_account_name       = azurerm_storage_account.example.name
  storage_account_access_key = azurerm_storage_account.example.primary_access_key

  site_config {
    always_on = true
  }

  lifecycle {
    ignore_changes = [site_config[0]]
  }
}

为了控制功能状态,一般来说,我们在功能键或功能应用程序设置级别进行此操作。例如,您可以使用

app_settings
资源的
azurerm_function_app
来控制函数的状态。

假设您有一个名为

MyFunction
的函数。如果您想在
dev
环境中禁用它,请在
prod
环境中启用它。

变量.tf:

variable "environment" {
  description = "The deployment environment (e.g., prod, dev)"
  type        = string
}

输出.tf:

output "function_app_url" {
  value = azurerm_windows_function_app.example.default_hostname
}

输出:

enter image description here

enter image description here

prod重复相同的操作,以便它禁用我们在查询中提到的所需功能。

© www.soinside.com 2019 - 2024. All rights reserved.