2015-09-12 13 views
24

Chcę napisać skrypt, który pracuje z wykorzystaniem lazurowe powłoki zasilania zautomatyzować dodawanie konfiguracji aplikacji Webdodanie ustawień aplikacji do istniejących Azure aplikacji sieci Web przy użyciu Azure zasilania Shell

Azure> wpisem MyWebApp> Ustawienia aplikacji> Ustawienia aplikacji

to wygląda jak klucz = „wartość”

piszę ten skrypt

########################### 
# 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 

ale wiem, że powyższy scenariusz jest tylko uzyskać moją aplikację internetową, teraz muszę uzyskać dostęp do MyWebApp> Ustawienia aplikacji> Ustawienia aplikacji i podać plik skryptu/tablicę moich nowych ustawień aplikacji i skrypt sprawdzić, czy są jakieś nowe przycisk Ustawienia aplikacji doda go do ustawień aplikacji, jeśli istnieją istniejące klucze, które zastąpią jego wartość. Co to są kroki lub APIS, czy mogę to zrobić z powłoką zasilania Lazuru?

Edit: Skrypt ten można zautomatyzować tworzenie nowych aplikacji internetowych i dodawania ustawień aplikacji do niego:

############################################## 
# 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

Czy Twoja edycja odpowiada na Twoje pytanie? –

+1

@ShaunLuttin Myślę, że nie – Marzouk

Odpowiedz

58

Oto aktualizacja do niego w oparciu o polecenia Azure PowerShell 12/2015.Przykład dotyczy ustawień specyficznych dla boksu, jeśli chcesz mieć globalny, użyj Get/Set-AzureRmWebApp i usuń parametr -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

To jest lepsza odpowiedź po wydaniu poleceń Azure PowerShell 12/2015. –

+0

Święty Moly! Dziękuję Ci!!! –

+0

Musiałem uruchomić ten fragment kodu, w inny sposób, używając zarówno Set-AzureRMWebApp, jak i Set-AzureRMWebAppSlot, jeśli tylko uruchomiłem Set-AzureRMWebApp, nieokreślone ustawienia w boksie testowym nie zostały zaktualizowane. Chyba że coś przeoczyłem ... – MartynJones87

11

pobierać ustawienia aplikacji

Pierwszy zestaw tych dwóch zmiennych.

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

Następnie przejdź do nowego trybu Menedżera zasobów i zaloguj się na swoje konto.

Switch-AzureMode AzureResourceManager 
Get-AzureAccount 

Następnie pobierz ustawienia aplikacji. (Uwaga że kleszcz back (`) oznacza nową linię.)

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

Dodaj Ustawienia/Aktualizacja aplikacji

Aby zaktualizować ustawienia, należy najpierw umieścić je w zmiennej.

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

Aby użyć Set-AzureWebsite, należy przekonwertować zmienną na tabelę skrótów.

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

Teraz dodaj/zaktualizuj wartości w tabeli mieszania.

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

Następnie należy wrócić do trybu zarządzania usługą i zatwierdzić ustawienia.

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

Kompletna Listing

$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 

Uwagi

AzureServiceManagement i AzureResourceManager nie są przeznaczone do stosowania w tej samej sesji. Na razie nie wydaje się, aby to ostatnie umożliwiło aktualizację ustawień aplikacji przez Set-AzureResource. Powyższe stanowi obejście. Innym sposobem jest użycie interfejsu wiersza polecenia Azure zamiast PowerShell.

+1

Dziękuję bardzo za szczegółową odpowiedź, sprawdzę ją i wrócę do ciebie – Marzouk

Powiązane problemy