2016-01-31 4 views
6

zu kopieren Ich frage mich, ob es eine einfache Möglichkeit gibt, alle Schlüsselwerte von einer Webanwendung Anwendungseinstellungen auf eine andere zu kopieren, wie in der folgenden Abbildung zu sehen Ich habe viele dieser Schlüsselwerte und es ist sehr mühsam, dies jedes Mal manuell zu tun.Ist es möglich, Anwendungseinstellungen leicht von einer Webanwendung zu einem anderen auf azurblauen

enter image description here

+0

Haben Sie versucht, ARM-Vorlagen zu verwenden? Sehen Sie sich hier ein Beispiel an, in dem ich die Knotenversion für meine Site eingestellt habe: https://github.com/christopheranderson/parse-server-example/blob/master/azuredeploy.json#L99 –

Antwort

7

können Sie Azure Powershell verwenden. Hier ist ein PowerShell-Skript für Sie.

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 

Dieses Skript Kopie App-Einstellungen von $mySite zu $mySite2. Wenn Ihre Webanwendung mit einem Steckplatz verbunden ist, sollten Sie stattdessen den folgenden Befehl verwenden: $props.

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

Und verwenden Set-AzureRMWebAppSlot statt Set-AzureRMWebApp

Set-AzureRMWebAppSlot -ResourceGroupName $myResourceGroup2 ` 
     -Name $mySite2 -Slot $slot -AppSettings $hash 
+0

Dies ist eine großartige Antwort, wenn Sie möchten Kopieren von der aktuellen Site zu einer anderen Site. Wenn das Ziel darin besteht, viele Websites mit denselben Einstellungen bereitzustellen, wird eine ARM-Vorlage vorgeschlagen. –

+0

@Jack Zeng Ich habe versucht, Ihren Code als Runbook ausführen, aber einen Fehler, http://stackoverflow.com/questions/35486796/azure-runbook-powershell-script-to-copy-all-webapp-settings – Xerxes

+0

Das ist fantastisch! –

0

Es scheint keine Möglichkeit zu geben SetAzureRmWebAppSlot die Reihenfolge der Einstellungen zu geben, es ist ein nutzloser Haufen Müll bedeutet. Zum Glück gibt es eine andere Art von Wolkenhülle.

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." 
Verwandte Themen