2016-01-31 9 views
6

下の図のように、私はこれらの重要な価値をたくさん持ち、毎回これを手動で行う必要が非常に面倒です。あるWebアプリケーションから別のWebアプリケーションに簡単にコピーすることは可能ですか

enter image description here

+0

ARMテンプレートを使用してみましたか?ここで私のサイトのノードバージョンを設定するサンプルをチェックしてください:https://github.com/christopheranderson/parse-server-example/blob/master/azuredeploy.json#L99 –

答えて

7

あなたはAzureのPowerShellを使用することができます。ここにPowerShellスクリプトがあります。

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 

このスクリプトは$mySiteから$mySite2にアプリの設定をコピーします。 Webアプリケーションにスロットが含まれている場合、$propsの場合は、代わりに次のコマンドを使用してください。

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

そして、それはゴミの無駄な山だという意味、SetAzureRmWebAppSlotに設定の順番を与えるする方法はないように見える代わりにSet-AzureRMWebApp

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

これは素晴らしい答えです。現在のサイトから別のサイトにコピーします。同じ設定ですべてのサイトを展開することが目標である場合は、ARMテンプレートを使用することをお勧めします。 –

+0

@Jack曽 私はランブックとしてあなたのコードを実行しようとしましたが、エラーが発生しました、 http://stackoverflow.com/questions/35486796/azure-runbook-powershell-script-to-copy-all-webapp-settings – Xerxes

+0

これは最高です! –

0

Set-AzureRMWebAppSlotを使用しています。幸いにも、別の種類のクラウドシェルがあります。

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