Azure Web App - Set Traffic

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

Sets the traffic distribution between multiple web app slots.


Note This template is designed to run against an azure web app octopus target, but will not use the slot defined.

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

azWebAppSetTraffic.AzureAcct =

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

Traffic Distribution

azWebAppSetTraffic.trafficDistro =

The distribution of traffic in percent (0-100). Each web app slot should be defined on a separate line. Any remaining percentage will automatically be applied to production.

*Example* ``` myOtherSlot=10 stage=30 ```

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"]

$trafficDistro = $OctopusParameters["azWebAppSetTraffic.trafficDistro"]

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

$cmdAction = "clear"

write-host "Checking distribution"
if(![string]::IsNullOrEmpty($trafficDistro))
{
	$distribution = ""

	$trafficDistro -split "`n" | ForEach-Object { $distribution += "$_ "}

	$distribution = $distribution.TrimEnd(' ')
    
    $cmdArgs += " --distribution $distribution"
    
    $cmdAction = "set"
}


$cmd = "az webapp traffic-routing $cmdAction $cmdArgs"

write-verbose "cmd to invoke: $cmd"

write-host "setting distributions"
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": "36791d2d-aa55-4bc7-bee4-a0d12d73f78e",
  "Name": "Azure Web App - Set Traffic",
  "Description": "Sets the traffic distribution between multiple web app slots.\n<hr />\n\n*<p>Note This template is designed to run against an azure web app octopus target, but will not use the slot defined. </p>*\n*<p>Depends on Azure CLI and powershell to be installed on the worker</p>*",
  "Version": 1,
  "ExportedAt": "2020-06-29T16:52:24.007Z",
  "ActionType": "Octopus.AzurePowerShell",
  "Author": "xtreampb",
  "Packages": [],
  "Parameters": [
    {
      "Id": "53d1306d-691c-4739-a09a-8fc9d66c60d3",
      "Name": "azWebAppSetTraffic.AzureAcct",
      "Label": "Azure Account",
      "HelpText": "An Azure account with permissions to the subscription and web app being modified",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "AzureAccount"
      }
    },
    {
      "Id": "1f788822-9980-44cc-9e9c-f87db5998dd5",
      "Name": "azWebAppSetTraffic.trafficDistro",
      "Label": "Traffic Distribution",
      "HelpText": "<p>\nThe distribution of traffic in percent (0-100). Each web app slot should be defined on a separate line. Any remaining percentage will automatically be applied to production.\n</p><p>\n*Example*\n```\nmyOtherSlot=10\nstage=30\n```\n</p>",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "MultiLineText"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Azure.AccountId": "#{azWebAppSetTraffic.AzureAcct}",
    "Octopus.Action.Script.ScriptBody": "$webAppName = $OctopusParameters[\"Octopus.Action.Azure.WebAppName\"]\n$rg = $OctopusParameters[\"Octopus.Action.Azure.ResourceGroupName\"]\n\n$trafficDistro = $OctopusParameters[\"azWebAppSetTraffic.trafficDistro\"]\n\n$cmdArgs = \"--name $webAppName --resource-group $rg\" \n\n$cmdAction = \"clear\"\n\nwrite-host \"Checking distribution\"\nif(![string]::IsNullOrEmpty($trafficDistro))\n{\n\t$distribution = \"\"\n\n\t$trafficDistro -split \"`n\" | ForEach-Object { $distribution += \"$_ \"}\n\n\t$distribution = $distribution.TrimEnd(' ')\n    \n    $cmdArgs += \" --distribution $distribution\"\n    \n    $cmdAction = \"set\"\n}\n\n\n$cmd = \"az webapp traffic-routing $cmdAction $cmdArgs\"\n\nwrite-verbose \"cmd to invoke: $cmd\"\n\nwrite-host \"setting distributions\"\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-traffic.json",
  "Website": "/step-templates/36791d2d-aa55-4bc7-bee4-a0d12d73f78e",
  "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 Monday, June 29, 2020