2015-09-12 15 views
24

Voglio scrivere uno script che esegue usando le coperture potere azzurro per automatizzare l'aggiunta alla configurazione di applicazioni WebL'aggiunta di un oggetto Impostazioni App Azure Web Application utilizzando Azure Power Shell

Azure> MyWebApp> Impostazioni applicazione> Impostazioni app

esistente

E 'sembrare key = "valore"

scrivo questo script

########################### 
# MyApp Config Automation # 
########################### 

#Begin 

$subscriptionName="MySubscriptionName" 
$webSiteName="MyWebAppName" 
$storageAccountName="StorageAccountName" 
######################################## 
$userName = "[email protected]" 
$securePassword = ConvertTo-SecureString -String "mypass" -AsPlainText -Force 
##################################### 
$cred = New-Object System.Management.Automation.PSCredential($userName, $securePassword) 
##################################### 
Add-AzureAccount -Credential $cred 
Select-AzureSubscription -SubscriptionName $subscriptionName -Default 
##################################### 
Get-AzureWebsite -Name $webSiteName 

#End 

ma so che lo script di cui sopra è solo ottenere la mia applicazione Web, ora ho bisogno di accedere a MyWebApp> Impostazioni applicazione> Impostazioni app e dare il file script/array delle mie nuove impostazioni App e lo script controlla se ci sono nuove chiavi App Settings che aggiungerà alle Impostazioni App, se ci sono chiavi esistenti che sostituiranno il suo valore. Quali sono i passaggi o APIS o posso farlo con la shell di potenza azzurra?

Edit: Questo script può automatizzare la creazione di nuove applicazioni web e l'aggiunta di impostazioni di App ad esso:

############################################## 
# Creating website and Adding Configs Script # 
############################################## 

$webSiteName="mywebsite" 
$storageAccountName="storageaccount" 
$subscriptionName="mysubsc" 
$userName = "myaccount" 
$securePassword = ConvertTo-SecureString -String "mypass" -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential($userName, $securePassword) 
Add-AzureAccount -Credential $cred 
Select-AzureSubscription -SubscriptionName $subscriptionName -Default 

New-AzureWebsite -Name $webSiteName 
New-AzureStorageAccount –StorageAccountName $storageAccountName -Location "South Central US" 
$ClientId="dfgdf6" 
$Password="ffefe" 
$StorageAccountKey = Get-AzureStorageKey -StorageAccountName $storageAccountName 
$AppSettings = @{"StorageAccountPrimary" = $StorageAccountKey.Primary;"StorageAccountSecondary" = $StorageAccountKey.Secondary;"ida:ClientId"=$ClientId;"ida:Password"=$Password} 

Set-AzureWebsite -Name $webSiteName -AppSettings $AppSettings 
+0

La tua modifica risponde alla tua domanda? –

+1

@ShaunLuttin penso no – Marzouk

risposta

58

Ecco un aggiornamento basato sui comandi di Azure PowerShell 12/2015.L'esempio è per le impostazioni specifiche dello slot, se si desidera globale, utilizzare Get/Set-AzureRmWebApp e rimuovere il parametro -slot.

$myResourceGroup = 'PartsUnlimitedMRP' 
$mySite = 'centpartsunlimited' 

$webApp = Get-AzureRMWebAppSlot -ResourceGroupName $myResourceGroup -Name $mySite -Slot production 
$appSettingList = $webApp.SiteConfig.AppSettings 

$hash = @{} 
ForEach ($kvp in $appSettingList) { 
    $hash[$kvp.Name] = $kvp.Value 
} 

$hash['NewKey'] = "NewValue" 
$hash['ExistingKey'] = "NewValue" 

Set-AzureRMWebAppSlot -ResourceGroupName $myResourceGroup -Name $mySite -AppSettings $hash -Slot production 
+2

Questa è la risposta migliore con il rilascio dei comandi di Azure PowerShell 12/2015. –

+0

holy moly! Grazie!!! –

+0

Ho dovuto eseguire questo snippet di codice, altrimenti utilizzando Set-AzureRMWebApp e Set-AzureRMWebAppSlot, se avessi eseguito solo Set-AzureRMWebApp, le impostazioni specifiche per non slot nello slot di gestione temporanea non sono state aggiornate. A meno che non mi sia sfuggito qualcosa ... – MartynJones87

11

recuperare le impostazioni App

Primo set queste due variabili.

$myResourceGroup = 'RESOURCE_GROUP_NAME' 
$mySite = 'SITE_NAME' 

Quindi passare alla nuova modalità Gestione risorse e accedere al proprio account.

Switch-AzureMode AzureResourceManager 
Get-AzureAccount 

Quindi recuperare le impostazioni dell'app. (nota che un segno di spunta di nuovo (`) si intende una nuova linea.)

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

Add Impostazioni/Aggiornamento App

per aggiornare le impostazioni, prima li ha messi in una variabile.

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

Per utilizzare Set-AzureWebsite convertire la variabile a una tabella hash.

$hash = @{} 
$props | Get-Member -MemberType NoteProperty | % { $hash[$_.Name] = $props.($_.Name) } 

Ora aggiungere/aggiornare i valori nella tabella hash.

$hash.NewKey = "NewValue" 
$hash.ExistingKey = "NewValue" 

Quindi tornare alla modalità Gestione servizi e confermare le impostazioni.

Switch-AzureMode AzureServiceManagement 
Set-AzureWebsite -Name $mySite -AppSettings $hash 

Elenco completo del codice

$myResourceGroup = 'RESOURCE_GROUP_NAME' 
$mySite = 'SITE_NAME' 

Switch-AzureMode AzureResourceManager 
Get-AzureAccount 

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

$props = (Invoke-AzureResourceAction -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) } 

$hash.NewKey = "NewValue" 
$hash.ExistingKey = "NewValue" 

Switch-AzureMode AzureServiceManagement 
Set-AzureWebsite -Name $mySite -AppSettings $hash 

Note

L'AzureServiceManagement e AzureResourceManager non sono stati pensati per l'uso nella stessa sessione. Per ora, quest'ultimo non sembra consentire l'aggiornamento delle impostazioni dell'app tramite Set-AzureResource. Quanto sopra è una soluzione alternativa. Un altro modo è utilizzare la CLI di Azure anziché PowerShell.

+1

Grazie mille per la tua risposta dettagliata, lo controllerò e tornerò a te – Marzouk