Azure, docker, Service Fabric

How to upgrade docker engine version in a Service Fabric cluster.

Recently we had to upgrade docker engine version in all nodes of our Service Fabric cluster hosted on Azure because of a vulnerability issue with the previous version.

There was no proper documentation available online so had to work with Microsoft SF team and did the same using the following steps:

  1. Restart-Deactivate 1 node at a time which you want to upgrade. You can do it from the SF explorer

2. Once the node is disabled, you can rdp into the machine and run the following powershell commands in admin mode

net stop ServiceFabricNodeBootstrapAgent

net stop FabricHostSvc
Install-Package -Name docker -ProviderName DockerMsftProvider -update -force

You should now see a prompt in powershell with the latest version of docker.

Once done, restart the virtual machine.

Go back to SF explorer and activate the node.


How to downgrade the tier or SKU of an Azure resource

We were recently doing a POC for a customer where in we were using an Integration Account(Standard tier). As it wasn’t production scale we thought of downgrading the SKU to free tier but didn’t find any option to do so from the portal.

Fortunately, we can do the same using Azure CLI/Powershell. Here’s the CLI script we used to downgrade the Integration Account’s SKU to free tier:

az resource update --resource-group SourceAs2 --resource-type Microsoft.Logic/integrationAccounts --name Integrationaccount --subscription 860188f0-6i3c-911c-98e0-4dcc90a57c70 --set

Lo and behold, the tier downgraded to free tier.

Azure, powershell

Copying Azure Appsettings between App services using powershell script

In a project lifecycle you are mostly dealing with a lot of servers, each representing a stage in your project cycle.

App services usually have app settings stored in Azure which makes it quite convenient for the admin to update them from Azure and not giving access to the values to a developer.

I always felt the pain of copying down appsettings from 1 App service to another on different servers so I wrote down this simple script which does the work for me.



$myResourceGroup = ‘RG-CRM-AE-PREPROD’


$mySite = ‘AT-CRM-UBIQUITY-AE-PP-01’


$webApp = Get-AzureRmWebApp -ResourceGroupName $myResourceGroup -Name $mySite

$appSettingList = $webApp.SiteConfig.AppSettings


$hash = @{}

ForEach ($kvp in $appSettingList) {

$hash[$kvp.Name] = $kvp.Value



$hash[‘NewKey’] = “NewValue”

$hash[‘ExistingKey’] = “NewValue”


Set-AzureRmWebApp -ResourceGroupName $myResourceGroup -Name $mySite -AppSettings $hash


Azure, Uncategorized

How to deploy a Web Application to Azure using Powershell

I have been using this ps script to deploy a webapp/ webapi to Azure using Powershell. It has minimal configuration but the commands allow you to define everything from Resource Group to scaling options for that matter if there is a need.

  1. PS D:\Deploy> $WebSiteLoc=”East US”
  2. PS D:\Deploy> $WebSiteName = “PowershellTrialSaurabh”
  3. PS D:\Deploy> Test-AzureName -Website $WebSiteName
  4. PS D:\Deploy> New-AzureWebsite -Location $WebSiteLoc -Name $WebSiteName

Instances : {}
NumberOfWorkers : 1
DefaultDocuments : {Default.htm, Default.html, Default.asp, index.htm…}
NetFrameworkVersion : v4.0
PhpVersion : 5.4
RequestTracingEnabled : False
HttpLoggingEnabled : False
DetailedErrorLoggingEnabled : False
PublishingUsername : $PowershellTrialSaurabh
PublishingPassword : EFWilNQrGDMoeYh1oemrku0NSn47h2P8SiPgPDaulebANQzlefzz0qFLTppQ
Metadata : {}
ConnectionStrings : {}
HandlerMappings : {}
Name : PowershellTrialSaurabh
State : Running
HostNames : {}
WebSpace : saurabhfirstmvcsample-RG-EastUSwebspace
SelfLink :
RepositorySiteName : PowershellTrialSaurabh
Sku : Free
UsageState : Normal
Enabled : True
AdminEnabled : True
EnabledHostNames : {,}
SiteProperties : Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.SitePropertie
AvailabilityState : Normal
HostNameSslStates : {,}
AzureDriveTraceEnabled :
AzureDriveTraceLevel : Error
AzureTableTraceEnabled :
AzureTableTraceLevel : Error
AzureBlobTraceEnabled :
AzureBlobTraceLevel : Error
ManagedPipelineMode : Integrated
WebSocketsEnabled : False
RemoteDebuggingEnabled : False
RemoteDebuggingVersion :
RoutingRules : {}
Use32BitWorkerProcess : True
AutoSwapSlotName :
SlotStickyAppSettingNames : {}
SlotStickyConnectionStringNames : {}

6. PS D:\Deploy> Show-AzureWebsite $WebSiteName
7. PS D:\Deploy> $path = “D:\Deploy\”
8. PS D:\Deploy> Publish-AzureWebsiteProject -Name $WebSiteName -Package $path
Change Summary:
Bytes Copied: 23380708
Files Added: 108
Files Updated: 4
Files Deleted: 1
Errors: 0
Warnings: 0
Parameters Changed: 0
Total No of Changes: 113