Azure Power Shellを使用して実行するスクリプトを作成して、Webアプリケーション構成の追加を自動化したい
Azure> MyWebApp>アプリケーション設定>アプリ設定
Key = "value"のように見えます
このスクリプトを書く
###########################
# 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
上記のスクリプトはWebアプリケーションのみを取得することを知っているので、MyWebApp>アプリケーション設定>アプリ設定にアクセスし、新しいアプリ設定のスクリプトファイル/配列と、新しいアプリ設定キーがあるかどうかをスクリプトで確認する必要があります既存のキーがある場合、その値をオーバーライドします。手順またはAPISとは何ですか、またはAzure Power Shellでそれを実行できますか?
編集:このスクリプトは、新しいWebアプリケーションの作成とアプリ設定の追加を自動化できます。
##############################################
# 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
これは、12/2015 Azure PowerShellコマンドに基づいた更新です。例はスロット固有の設定用です。グローバルが必要な場合は、Get/Set-AzureRmWebAppを使用して-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つの変数を設定します。
$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
Set-AzureWebsite
を使用するには、変数をハッシュテーブルに変換します。
$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
$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とAzureResourceManagerは、同じセッションで使用するためのものではありません。現時点では、後者はSet-AzureResource
を介したアプリ設定の更新を許可していないようです。上記は回避策です。別の方法は、PowerShellの代わりにAzure CLIを使用することです。
これらの回答は、元のAzure PowerShellとAzureRMの両方が廃止されたため、年齢を示しています。 Az PowerShellモジュールを使用してこれを行うには、次のようになります。
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
-Azureアカウントに接続します。サブスクリプションを選択する必要がある場合は、後続の手順を実行する必要がある場合があります$site = Get-AzWebApp
...-変更するサイトを取得します$oldSettings
...-既存の設定をすべて取得し、それらをHashTable に入れます$site.SiteConfig.AppSettings | %
-ForEach-Object
の省略形エイリアスを介して各設定をパイプ(パス)します{ $h = @{} }
--Begin
位置パラメーターを介してHashTable
を作成します{ $h[$_.Name] = $_Value }
-$site.SiteConfig.AppSettings
位置パラメーターを介して、-Process
の各値の名前付き値をHashTable
に追加します{ $h }
-左側の変数への-End
位置パラメーターを介して、新しく設定されたHashTable
を返します$newSettings = @{
...-追加する設定のHashTable
を作成しますSet-AzWebApp
...-2つのHashTableを結合し、既存のAppSettingsを結合セットに置き換えます。これは、古い設定と新しい設定の間に重複がないことを前提としていることに注意してください。その状況が当てはまる場合、あなたにとって意味のある方法で重複排除が必要になります。つまり、上書き/上書きなしです。