Azure Web App - Set App Settings

Octopus.AzurePowerShell exported 2020-06-30 by xtreampb belongs to ‘Azure’ category.

Sets the Azure web app settings of a targeted Azure web app deployment target. Will use the deployment slot if defined.


Note This template is designed to run against an azure web app octopus target

Depends on Azure CLI and powershell to be installed on the worker

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Azure Account

azureWebAppSettings.azAccount =

An Azure account with permissions to the subscription and web app being modified

Web App Settings

azureWebAppSettings.settings =

The web app settings to append or update. Each new setting should be on a new line as a key value pair using the template key=value

Is Slot Settings

azureWebAppSettings.isSlotSettings = false

This is used to distinguish what settings are slot specific and which one are not. Slot setting do not follow the deployed app when the slot is swapped.

Script body

Steps based on this template will execute the following PowerShell script.

$webAppName = $OctopusParameters["Octopus.Action.Azure.WebAppName"]
$rg = $OctopusParameters["Octopus.Action.Azure.ResourceGroupName"]
$slot = $OctopusParameters["Octopus.Action.Azure.DeploymentSlot"]
$isSlotSettings = $OctopusParameters["azureWebAppSettings.isSlotSettings"]

$settingsType = "settings"

$appSettings = $OctopusParameters["azureWebAppSettings.settings"]

$settings = ""

Write-Host "Parsing Settings"

$appSettings -split "`n" | ForEach-Object { $settings += "$_ "}

$settings = $settings.TrimEnd(' ')

$cmdArgs = "--name $webAppName --resource-group $rg"

if(![string]::IsNullOrEmpty($slot))
{
	if($isSlotSettings -eq 'true')
    {
    	$settingsType = "slot-settings"
    }
    
	$settings += " --slot $slot"
}

$settingsArgs = " --$settingsType $settings"

Write-Host "Setting app settings"

$cmd = "az webapp config appsettings set $cmdArgs $settingsArgs"

write-verbose "command to execute: $cmd"

Invoke-Expression $cmd

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "850667b2-567d-46ba-a87d-d85dc31ebc83",
  "Name": "Azure Web App - Set App Settings",
  "Description": "Sets the Azure web app settings of a targeted Azure web app deployment target.  Will use the deployment slot if defined.\n<hr />\n\n*<p>Note This template is designed to run against an azure web app octopus target</p>*\n*<p>Depends on Azure CLI and powershell to be installed on the worker</p>*",
  "Version": 1,
  "ExportedAt": "2020-06-30T15:48:06.905Z",
  "ActionType": "Octopus.AzurePowerShell",
  "Author": "xtreampb",
  "Packages": [],
  "Parameters": [
    {
      "Id": "598025e6-2d89-49bf-8abb-fda6da181de5",
      "Name": "azureWebAppSettings.azAccount",
      "Label": "Azure Account",
      "HelpText": "An Azure account with permissions to the subscription and web app being modified",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "AzureAccount"
      }
    },
    {
      "Id": "5d232cfd-8e9f-4b3e-8c4e-7bf3a75ced19",
      "Name": "azureWebAppSettings.settings",
      "Label": "Web App Settings",
      "HelpText": "The web app settings to append or update.  Each new setting should be on a new line as a key value pair using the template `key=value`",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "MultiLineText"
      }
    },
    {
      "Id": "9bbee2cf-c57c-45db-8a7f-62a752779b56",
      "Name": "azureWebAppSettings.isSlotSettings",
      "Label": "Is Slot Settings",
      "HelpText": "This is used to distinguish what settings are slot specific and which one are not.  Slot setting do not follow the deployed app when the slot is swapped.",
      "DefaultValue": "false",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Azure.AccountId": "#{azureWebAppSettings.azAccount}",
    "Octopus.Action.Script.ScriptBody": "$webAppName = $OctopusParameters[\"Octopus.Action.Azure.WebAppName\"]\n$rg = $OctopusParameters[\"Octopus.Action.Azure.ResourceGroupName\"]\n$slot = $OctopusParameters[\"Octopus.Action.Azure.DeploymentSlot\"]\n$isSlotSettings = $OctopusParameters[\"azureWebAppSettings.isSlotSettings\"]\n\n$settingsType = \"settings\"\n\n$appSettings = $OctopusParameters[\"azureWebAppSettings.settings\"]\n\n$settings = \"\"\n\nWrite-Host \"Parsing Settings\"\n\n$appSettings -split \"`n\" | ForEach-Object { $settings += \"$_ \"}\n\n$settings = $settings.TrimEnd(' ')\n\n$cmdArgs = \"--name $webAppName --resource-group $rg\"\n\nif(![string]::IsNullOrEmpty($slot))\n{\n\tif($isSlotSettings -eq 'true')\n    {\n    \t$settingsType = \"slot-settings\"\n    }\n    \n\t$settings += \" --slot $slot\"\n}\n\n$settingsArgs = \" --$settingsType $settings\"\n\nWrite-Host \"Setting app settings\"\n\n$cmd = \"az webapp config appsettings set $cmdArgs $settingsArgs\"\n\nwrite-verbose \"command to execute: $cmd\"\n\nInvoke-Expression $cmd\n"
  },
  "Category": "Azure",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/azure-web-app-set-app-settings.json",
  "Website": "/step-templates/850667b2-567d-46ba-a87d-d85dc31ebc83",
  "Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF////AHjXf7vrv931QJrh7/f8EIDaIIncMJHfYKvmz+b3n8zw3+76j8Ttr9XycLPpUKLkkKvYFAAABGZJREFUeNrsnNmCqjoQRc1MEiD8/9cer7Yt2KBJZQC8ez07sKlKTQlcLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzoUSnt8YxXlFuGHSbIaxvj+fip4btkLn1blkWLaF5v03yLhLOYlVuGYfMOMZzNGxCOzhjTJqFkXnjq3Dr1yyvPI3hGl3Ih3zzHHNKudRstRhX5O58vIcShY67Gq6EPIESlzUWvazaGAOGbvU7ArDu/g8M4o8opDZWvbvPzlL/MMBE8jT9T9W7PbAJlHPTBFRf9yVTEcs63msXz2UHLSgf650G/d5t+wjbxxB2UCMqGrk8/LFSD7uJMeNt5bcJCyQZyAe5Fo9KYfWS2flQrr4b4tpuzaeWjYs49rt9LHf9uZD7+VbyVi9EBNrjYjuq2sxQOrl+p+HuBVu45qvqfq691ttYFQ5KyKbyJgaIY/NGxrlWZwlwGvmvu1oY3PuAv0niTq6tZ78jk//9uc1r1r4lQki7y7sp2Tu4V1y2iLoqFTqi1lIGcpFiebrZNZ1dOkF0cCIlO8jQ47nCkam9Lilz9GhDF1I6XGLzfnhwDIIZVfI7+8SSgfHsijqXENOGJF5QorG4EcW0OrScqX/dDrXpr70Ut/BII+1OfECPuYz/NWxYmgrCsUskxPvyhgmrw+WGZ6lGTuOlIyCYWTFyWjpM5KIZRUIOwjRNYRQ6tZF9BXtk8hWAHPtLNJ727Fq0JSkC1FDRRF0Jalj0d5qVh2KEpM2TuSsCYTCT6ZkdmFYI9LrYp5QayWbo6NXlZwcRD/61pth5Fq5EX423QQxNjhqWvvklkljOLkYjrmphXPZOJOk6Pg7HKMsrtQKcowzZoK3rx1ZUelGMdQA/HaKkjAt2RgqpZeYqbNbH7Hp2ct4nqfSPOfe0ftiSTZJydOV6rG5bQbyLK+nRuCC0343PzDgiOXyQA5c14BTZi98uR/5KJ1SnatLdoO50WWBQZPTq0VgsklU3h932actuo17ayrHrb/3ykiegd3KbqF2wbV6RrlsJ07yLcpsWFTul9RyK6ZScr+tk7oNrFj0o7HQUlj4EiEvJ6rPLKSmlMZCrksl1OnLaRkxc+/HB1naMhNtT/6yM2bDs6azCRHrM3aVPN7aW8irD/10B8njpAMcsl8okXcdKrl4sPsLmQVy/Sj90ucPRc/d/Bxxj+dXSpCayen32D+hLi16MsIV8gfCXrYp6ySsiJKRUF0XXiLpVbFU+fNv4r7mOwhFsX4ZdwpSi1DYs2jb6ebZ9788cblTzMrYhu7sf/17IFdtuviJ2ioHA6pMHkoH4CLUeMBU7iGkxuM/YgcdderF9ibRdc7O982F1HpYhjfWUe+x5a6pjop9iNLfoePvlsdZdTSMwfxSmTY20Q0eHnUNzga1edeNmmqbg18aMVR1L9vwSXHF9TfIWBxpKLs2hj3eQeBC0USvp2HHF3eIkRdhFOd6ER8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/I/4J8AAo/80BciBec4AAAAASUVORK5CYII=",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Tuesday, June 30, 2020