Kloning av Azure App Service-appar med PowerShell
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Med lanseringen av Microsoft Azure PowerShell version 1.1.0 har ett nytt alternativ lagts till New-AzWebApp
som gör att du kan klona en befintlig App Service-app till en nyligen skapad app i en annan region eller i samma region. Med det här alternativet kan kunder snabbt och enkelt distribuera ett antal appar i olika regioner.
Appkloning stöds för App Service-planerna Standard, Premium, Premium V2 och Isolerad. Den nya funktionen använder samma begränsningar som apptjänstsäkerhetskopieringsfunktionen, se Säkerhetskopiera en app i Azure App Service.
Klona en befintlig app
Scenario: En befintlig app i regionen USA, södra centrala och du vill klona innehållet till en ny app i regionen USA, norra centrala. Du kan göra det genom att använda Azure Resource Manager-versionen av PowerShell-cmdleten för att skapa en ny app med alternativet -SourceWebApp
.
Om du känner till resursgruppens namn som innehåller källappen kan du använda följande PowerShell-kommando för att hämta källappens information (i det här fallet med namnet source-webapp
):
$srcapp = Get-AzWebApp -ResourceGroupName SourceAzureResourceGroup -Name source-webapp
Om du vill skapa en ny App Service-plan kan du använda New-AzAppServicePlan
kommandot som i följande exempel
New-AzAppServicePlan -Location "North Central US" -ResourceGroupName DestinationAzureResourceGroup -Name DestinationAppServicePlan -Tier Standard
Med kommandot New-AzWebApp
kan du skapa den nya appen i regionen USA, norra centrala och koppla den till en befintlig App Service-plan. Dessutom kan du använda samma resursgrupp som källappen eller definiera en ny resursgrupp, som du ser i följande kommando:
$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp
Om du vill klona en befintlig app, inklusive alla associerade distributionsplatser, måste du använda parametern IncludeSourceWebAppSlots
. Observera att parametern IncludeSourceWebAppSlots
endast stöds för kloning av en hel app, inklusive alla dess platser. Följande PowerShell-kommando visar användningen av parametern med New-AzWebApp
kommandot :
$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -IncludeSourceWebAppSlots
Om du vill klona en befintlig app i samma region måste du skapa en ny resursgrupp och en ny App Service-plan i samma region och sedan använda följande PowerShell-kommando för att klona appen:
$destapp = New-AzWebApp -ResourceGroupName NewAzureResourceGroup -Name dest-webapp -Location "South Central US" -AppServicePlan NewAppServicePlan -SourceWebApp $srcapp
Klona en befintlig app till en App Service-miljön
Scenario: En befintlig app i regionen USA, södra centrala och du vill klona innehållet till en ny app till en befintlig App Service-miljön (ASE).
Om du känner till resursgruppens namn som innehåller källappen kan du använda följande PowerShell-kommando för att hämta källappens information (i det här fallet med namnet source-webapp
):
$srcapp = Get-AzWebApp -ResourceGroupName SourceAzureResourceGroup -Name source-webapp
Om du känner till ASE-namnet och resursgruppens namn som ASE tillhör kan du skapa den nya appen i den befintliga ASE:n, som du ser i följande kommando:
$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "North Central US" -AppServicePlan DestinationAppServicePlan -ASEName DestinationASE -ASEResourceGroupName DestinationASEResourceGroupName -SourceWebApp $srcapp
Parametern Location
krävs på grund av en äldre orsak, men den ignoreras när du skapar appen i en ASE.
Klona ett befintligt appfack
Scenario: Du vill klona ett befintligt distributionsfack för en app till antingen en ny app eller ett nytt fack. Den nya appen kan finnas i samma region som det ursprungliga appfacket eller i en annan region.
Om du känner till resursgruppens namn som innehåller källappen kan du använda följande PowerShell-kommando för att hämta källappplatsens information (i det här fallet med namnet source-appslot
) kopplad till source-app
:
$srcappslot = Get-AzWebAppSlot -ResourceGroupName SourceAzureResourceGroup -Name source-app -Slot source-appslot
Följande kommando visar hur du skapar en klon av källappen till en ny app:
$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-app -Location "North Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcappslot
Konfigurera Traffic Manager vid kloning av en app
Att skapa appar i flera regioner och konfigurera Azure Traffic Manager för att dirigera trafik till alla dessa appar är ett viktigt scenario för att säkerställa att kundernas appar är mycket tillgängliga. När du klonar en befintlig app kan du ansluta båda apparna till antingen en ny Traffic Manager-profil eller en befintlig. Endast Azure Resource Manager-versionen av Traffic Manager stöds.
Skapa en ny Traffic Manager-profil vid kloning av en app
Scenario: Du vill klona en app till en annan region samtidigt som du konfigurerar en Azure Resource Manager Traffic Manager-profil som innehåller båda apparna. Följande kommando visar hur du skapar en klon av källappen till en ny app när du konfigurerar en ny Traffic Manager-profil:
$destapp = New-AzWebApp -ResourceGroupName DestinationAzureResourceGroup -Name dest-webapp -Location "South Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileName newTrafficManagerProfile
Lägga till ny klonad app i en befintlig Traffic Manager-profil
Scenario: Du har redan en Azure Resource Manager Traffic Manager-profil och vill lägga till båda apparna som slutpunkter. För att göra det måste du först sätta ihop det befintliga traffic manager-profil-ID:t. Du behöver prenumerations-ID: t, resursgruppens namn och det befintliga traffic manager-profilnamnet.
$TMProfileID = "/subscriptions/<Your subscription ID goes here>/resourceGroups/<Your resource group name goes here>/providers/Microsoft.TrafficManagerProfiles/ExistingTrafficManagerProfileName"
När du har haft trafikhanterar-ID:t visar följande kommando hur du skapar en klon av källappen till en ny app samtidigt som du lägger till dem i en befintlig Traffic Manager-profil:
$destapp = New-AzWebApp -ResourceGroupName <Resource group name> -Name dest-webapp -Location "South Central US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileId $TMProfileID
Kommentar
Om du får ett felmeddelande om att "SSL-valideringen på traffic manager-värdnamnet misslyckas" föreslår vi att du använder attributet -IgnoreCustomHostNames i powershell-cmdleten när du utför kloningsåtgärden eller använder portalen.
Aktuella begränsningar
Här är de kända begränsningarna för appkloning:
- Inställningar för automatisk skalning klonas inte
- Inställningar för säkerhetskopieringsschema klonas inte
- Inställningar för virtuella nätverk klonas inte
- App Insights konfigureras inte automatiskt i målappen
- Easy Auth-inställningar klonas inte
- Kudu-tillägget klonas inte
- TiP-regler klonas inte
- Databasinnehåll klonas inte
- Utgående IP-adresser ändras vid kloning till en annan skalningsenhet
- Inte tillgängligt för Linux-appar
- Hanterade identiteter klonas inte
- Inte tillgängligt för funktionsappar