Je veux écrire un script qui s'exécute à l'aide d'Azure Power Shell pour automatiser l'ajout de la configuration de l'application Web
Azure> MyWebApp> Paramètres d'application> Paramètres d'application
Il ressemble à key = "value"
J'écris ce 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
mais je sais que le script ci-dessus ne contient que mon application Web, maintenant je dois accéder à MyWebApp> Paramètres d'application> Paramètres d'application et donner le fichier/tableau de script de mes nouveaux paramètres d'application et le script vérifier s'il y a une nouvelle clé Paramètres d'application il l'ajoutera aux paramètres de l'application, s'il existe des clés existantes, il remplacera sa valeur. Quelles sont les étapes ou APIS ou puis-je le faire avec Azure Power Shell?
Modifier: ce script peut automatiser la création d'une nouvelle application Web et y ajouter des paramètres d'application:
##############################################
# 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
Voici une mise à jour basée sur les commandes Azure PowerShell 12/2015. L'exemple concerne les paramètres spécifiques à l'emplacement, si vous voulez global, utilisez Get/Set-AzureRmWebApp et supprimez le paramètre -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
Définissez d'abord ces deux variables.
$myResourceGroup = 'RESOURCE_GROUP_NAME'
$mySite = 'SITE_NAME'
Passez ensuite au nouveau mode Resource Manager et connectez-vous à votre compte.
Switch-AzureMode AzureResourceManager
Get-AzureAccount
Récupérez ensuite les paramètres de l'application. (Remarque qu'une coche arrière (`) signifie une nouvelle ligne.)
(Invoke-AzureResourceAction -ResourceGroupName $myResourceGroup `
-ResourceType Microsoft.Web/sites/Config -Name $mySite/appsettings `
-Action list -ApiVersion 2015-08-01 -Force).Properties
Pour mettre à jour les paramètres, placez-les d'abord dans une variable.
$props = (Invoke-AzureResourceAction -ResourceGroupName $myResourceGroup `
-ResourceType Microsoft.Web/sites/Config -Name $mySite/appsettings `
-Action list -ApiVersion 2015-08-01 -Force).Properties
Utiliser Set-AzureWebsite
convertit la variable en table de hachage.
$hash = @{}
$props | Get-Member -MemberType NoteProperty | % { $hash[$_.Name] = $props.($_.Name) }
Maintenant, ajoutez/mettez à jour les valeurs dans la table de hachage.
$hash.NewKey = "NewValue"
$hash.ExistingKey = "NewValue"
Revenez ensuite au mode Gestion des services et validez les paramètres.
Switch-AzureMode AzureServiceManagement
Set-AzureWebsite -Name $mySite -AppSettings $hash
$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
AzureServiceManagement et AzureResourceManager ne sont pas destinés à être utilisés dans la même session. Pour l'instant, ce dernier ne semble pas autoriser la mise à jour des paramètres de l'application via Set-AzureResource
. Ce qui précède est une solution de contournement. Une autre façon consiste à utiliser l'Azure CLI au lieu de PowerShell.
Ces réponses indiquent leur âge, car Azure PowerShell et AzureRM d'origine sont obsolètes. Pour ce faire, en utilisant le module Az PowerShell, cela ressemblerait à ceci:
Connect-AzAccount
$site = Get-AzWebApp -Name foo-com-dev-as
$oldSettings = ($site.SiteConfig.AppSettings | % { $h = @{} } { $h[$_.Name] = $_.Value } { $h })
$newSettings = @{ StorageAccountPrimary = $StorageAccountKey.Primary
StorageAccountSecondary = $StorageAccountKey.Secondary
"ida:ClientId" = $ClientId
"ida:Password" = $Password }
Set-AzWebApp -ResourceGroupName foo-com-dev-rg -Name foo-com-dev-as -AppSettings ($oldSettings + $newSettings)
Connection-AzAccount
- se connecte au compte Azure, vous devrez peut-être effectuer une étape ultérieure si vous devez sélectionner un abonnement$site = Get-AzWebApp
... - récupère le site à modifier$oldSettings
... - récupère tous les paramètres existants et les place dans un HashTable $site.SiteConfig.AppSettings | %
- Pipes (passe) chaque paramètre via un raccourci alias de ForEach-Object
{ $h = @{} }
- crée un HashTable
via le -Begin
paramètre positionnel{ $h[$_.Name] = $_Value }
- ajoute une valeur nommée au HashTable
pour chaque valeur dans $site.SiteConfig.AppSettings
via le -Process
paramètre positionnel{ $h }
- renvoie le HashTable
nouvellement rempli via le -End
paramètre positionnel à la variable à gauche$newSettings = @{
... - crée un HashTable
des paramètres à ajouterSet-AzWebApp
... - combine les deux HashTables et remplace les AppSettings existants par l'ensemble combiné. Notez que cela suppose que vous n'avez aucun doublon entre l'ancien et le nouveau paramètre. Si cette situation s'applique à vous, vous aurez besoin de la déduplication d'une manière qui vous convient, c'est-à-dire écraser/pas écraser.