Is it possible to easily copy applications settings from one web app to another on azure

前端 未结 3 776
既然无缘
既然无缘 2021-02-05 22:13

I was wondering if there is an easy way to completely copy all the key values from one web app\'s application settings to another, as seen in the below picture I have a lot of t

相关标签:
3条回答
  • 2021-02-05 22:27

    You can use Azure PowerShell. Here is a PowerShell Script for you.

    try{
        $acct = Get-AzureRmSubscription
    }
    catch{
        Login-AzureRmAccount
    }
    
    $myResourceGroup = '<your resource group>'
    $mySite = '<your web app>'
    $myResourceGroup2 = '<another resource group>'
    $mySite2 = '<another web app>'
    
    $props = (Invoke-AzureRmResourceAction -ResourceGroupName $myResourceGroup `
            -ResourceType Microsoft.Web/sites/Config -Name $mySite/appsettings `
            -Action list -ApiVersion 2015-08-01 -Force).Properties
    
    $hash = @{}
    $props | Get-Member -MemberType NoteProperty | % { $hash[$_.Name] = $props.($_.Name) }
    
    Set-AzureRMWebApp -ResourceGroupName $myResourceGroup2 `
            -Name $mySite2 -AppSettings $hash
    

    This script copy app settings from $mySite to $mySite2. If your web app involves with slot, for $props, you should use the following command instead.

    $props = (Invoke-AzureRmResourceAction -ResourceGroupName $myResourceGroup `
            -ResourceType Microsoft.Web/sites/slots/Config -Name $mySite/$slot/appsettings `
            -Action list -ApiVersion 2015-08-01 -Force).Properties 
    

    And, use Set-AzureRMWebAppSlot instead of Set-AzureRMWebApp

    Set-AzureRMWebAppSlot -ResourceGroupName $myResourceGroup2 `
            -Name $mySite2 -Slot $slot -AppSettings $hash
    
    0 讨论(0)
  • 2021-02-05 22:38

    There appears to be no way to give SetAzureRmWebAppSlot the order of the settings, meaning it's a useless pile of garbage. Luckily, there's another kind of cloud shell.

    srcResourceGroup=$1
    srcName=$2
    dstResourceGroup=$3
    dstName=$4
    
    settingsToBeRemoved=$(az webapp config appsettings list --resource-group $dstResourceGroup --name $dstName | jq '.[] | .name' -r)
    
    if [[ ! -z $settingsToBeRemoved ]]; then
        az webapp config appsettings delete --resource-group $dstResourceGroup --name $dstName --setting-names $settingsToBeRemoved > /dev/null
    fi
    
    settingsToBeCopied=$(az webapp config appsettings list --resource-group $srcResourceGroup --name $srcName | jq '.[] | .name+"="+.value' -r)
    
    if [[ ! -z $settingsToBeCopied ]]; then
        az webapp config appsettings set --resource-group $dstResourceGroup --name $dstName --settings $settingsToBeCopied > /dev/null
    fi
    
    echo "Copied settings from $srcName to $dstName."
    
    0 讨论(0)
  • 2021-02-05 22:38

    I adjust some code I found so I could copy all settings and connection strings, but not override existing ones. I was having the problem of creating the app with application insights and other variables specific for that app/function and I was seeing those get wiped out. It can also help with future updates of apps

    https://gist.github.com/danparker276/6d080f687718c8a92d8d8a43eddaae79

    0 讨论(0)
提交回复
热议问题