簡體   English   中英

增量部署 Azure ARM 模板

[英]Incremental Deployment Azure ARM Templates

我正在通過 VSTS Release Definition 中的 ARM 模板部署資源。

例如,我部署了 Azure 函數應用程序,部署后,我通過門戶在應用程序設置中添加了一些鍵。

在下一次部署期間,由於此函數應用程序在 ARM 模板中,應用程序設置將被刪除。

如果資源存在,如何忽略該資源,如果資源組中不存在該資源,則僅通過 ARM 模板創建它。

我在 ps 文件中使用 New-AzureRMResourceGroupDeployment。

我相信我之前發布過類似的問題。 如果通過 Azure CLI 或門戶設置其他應用設置,並且 ARM 模板也包含應用設置,則它將僅設置通過 ARM 模板定義的應用設置。

Azure Function+ARM:將應用設置與當前設置合並

我目前的解決方法是從 webapp 讀取當前的應用程序設置並將它們與我的“默認設置”合並。

一些代碼:


$appSettings = @{ }

$functionAppExists = Get-AzureRmWebApp -Name $AppName -ResourceGroupName $ResourceGroupName -ErrorAction SilentlyContinue
if($functionAppExists) {
    $appSettingsObject = Invoke-AzureRmResourceAction -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/config -ResourceName "$AppName/appsettings" -Action list -Force
    $appSettingsObject.properties.psobject.properties | Foreach-Object { $appSettings[$_.Name] = $_.Value }
}
$appSettings["FUNCTIONS_EXTENSION_VERSION"] = "~$FunctionAppVersion"
$storageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
$appSettings["AzureWebJobsStorage"] = "DefaultEndpointsProtocol=https;AccountName=$StorageAccountName;AccountKey=$storageAccountKey;EndpointSuffix=core.windows.net"

  "parameters": {
    "appSettings": {
      "type": "object",
      "defaultValue": {
        "FUNCTIONS_EXTENSION_VERSION":"~2"
      }
    }
  }

  {
      "apiVersion": "2015-08-01",
      "name": "appsettings",
      "type": "config",
      "condition": "[not(empty(parameters('appSettings')))]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', variables('functionAppName'))]"
      ],
      "properties": "[parameters('appSettings')]"
    }

除非在使用 New-AzureRMResourceGroupDeployment 時指定 -Mode,否則部署本身默認是增量的。 部署會查看您的資源組,並且不會觸及完全按照模板中配置的資源。

話雖如此,如果您的函數應用的某些部分不在模板中(例如應用設置),則一旦您重新運行部署,它們將被“重寫”。

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-deploy

暫無
暫無

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

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