0

Я хотел бы установить строки подключения и настройки приложения для своего веб-приложения Azure с помощью powershell. И я хотел бы, чтобы эти настройки встали с слотом, а не с приложением, когда оно было заменено.AzureRM Web App - Как управлять настройкой слота с помощью Powershell

Код для настройки приложения выглядит следующим образом, и она работает:

$PropertiesObject = @{"SMTPUser"="myuser"; "SMTPPassword"="secretpwd";} 
$webAppName = "mywebapp" 
$slotName = "demo" 
$resourceGroupName = "myResourceGroup" 

New-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName $resourceGroupName -ResourceType Microsoft.Web/sites/slots/config -ResourceName $webAppName/$slotName/appsettings -ApiVersion 2015-08-01 -Force 


$stickSlotConfigObject = @{"connectionStringNames"[email protected](); "appSettingNames" = @("SMTPUserName","SMTPPassword");} 

$result = Set-AzureRmResource -PropertyObject $stickSlotConfigObject -ResourceGroupName $resourceGroupName -ResourceType Microsoft.Web/sites/config -ResourceName $webAppName/slotConfigNames -ApiVersion 2015-08-01 -Force 

Это работает. Когда я перехожу к лезвию слота веб-приложения на портале Azure, установите флажок «Настройки слота», как я хочу.

Я пытаюсь установить строки подключения , чтобы установить флажок «Настройки слота». Я пробовал следующее:

$PropertiesObject = @{ 
    AzureWebJobsStorage = @{ 
    Type = "Custom"; 
    Value = "somestring" 
    }; 
    Common = @{ 
    Type = "SQLAzure"; 
    Value = "somedatabasestring" 
    }; 
}; 

$webAppName = "mywebapp" 
$slotName = "demo" 
$resourceGroupName = "myResourceGroup" 

New-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName $resourceGroupName -ResourceType Microsoft.Web/sites/slots/config -ResourceName $webAppName/$slotName/appsettings -ApiVersion 2015-08-01 -Force 

$stickSlotConfigObject = @{"appSettingNames"[email protected]();"connectionStringNames"[email protected]("AzureWebJobsStorage","Common"); } 

$result = Set-AzureRmResource -PropertyObject $stickSlotConfigObject -ResourceGroupName $resourceGroupName -ResourceType Microsoft.Web/sites/config -ResourceName $webAppName/appsettings -ApiVersion 2015-08-01 -Force 

Это не помогло. Я получил следующее сообщение об ошибке:

New-AzureRmResource : {"Code":"BadRequest","Message":"The parameter properties has an invalid value.","Target":null,"Details":[{"Message":"The parameter properties has an invalid value."},{"Code":"BadRequest"},{"ErrorEntity":{"Code":"BadRequest","Message":"The parameter properties has an invalid value.","ExtendedCode":"51008","MessageTemplate":"The parameter {0} has an invalid value.","Parameters":["properties"],"InnerErrors":null}}],"Innererror":null} 

Я попробовал другой твик (который я забыл), и это говорит о том, что объект $ PropertiesObject не был в правильном формате.

Как закодировать его в Powershell, так что я могу проверить флажок установки слота строки подключения веб-приложения (или настроить его как «липкий»?

+0

Do y ou есть обновления по этой теме? –

+0

Я протестировал и принял ответ ниже. –

ответ

2

Пожалуйста, попробуйте с следующий код, чтобы установить строку подключения как липкую настройку для слота. Он работает правильно для меня. Более подробная информация об автоматизации Azure WebApps с PowerShell ARM образом, пожалуйста, обратитесь к document.

$connectionString = @{} 
$webAppName = "Web AppName" 
$resourceGroup ="Resource Group Name" 
$slotName ="slot Name" 
$connectionString.Add("AzureWebJobsStorage", @{ value = "The Actual connecting string here" ; Type = 3 }) #Custom 
$connectionString.Add("Common", @{ value = "The Actual connecting string here" ; Type = 2 }) #Azure SQL 

    Login-AzureRmAccount 
    # creat slot connection string 
    New-AzureRmResource -PropertyObject $connectionString ` 
    -ResourceGroupName $resourceGroup ` 
    -ResourceType "Microsoft.Web/sites/slots/config" ` 
    -ResourceName "$webAppName/$slotName/connectionstrings" ` 
    -ApiVersion 2015-08-01 -Force 

    # set connection string as sticky setting 
    $stickSlotConfigObject = @{"connectionStringNames" = @("AzureWebJobsStorage","Common")} #connection string Name 
    Set-AzureRmResource -PropertyObject $stickSlotConfigObject ` 
    -ResourceGroupName $resourceGroup ` 
    -ResourceType Microsoft.Web/sites/config ` 
    -ResourceName $webAppName/slotConfigNames ` 
    -ApiVersion 2015-08-01 -Force 

enter image description here

+0

Спасибо. Я был так близко. «$ webAppName/$ slotName/connectionstrings» и $ webAppName/slotConfigNames было тем, что мне не хватало.Я не могу сказать из документации, как назвать суб-хеши. Также, что портал resources.azure.com - огромная помощь! Этот портал должен быть связан на каждой странице портала portal.azure.comm, чтобы люди могли легко понять, как использовать REST или Powershell для его скриптинга. –

0
$resourceName = $webappname + “/slotconfigname” 
$stickySlot = Get-AzureRmResource -ResourceName $resourceName -ResourceGroupName -ResourceType “Microsoft.Web/Sites/config” -ApiVersion “2015-08-01” 

Вы можете проверить существующие по:.

$stickySlot.Properties.AppSettingNames 

Здесь вам необходимо различные подходы Если они пусты с самого начала идти, вам нужно создать новый массив с параметрами:

$settings = @(“AppSetting1, “AppSetting2”) 
$stickySlot.Properties.AppSettingNames = $settings 

Если уже есть другие ценности, и вы хотите сохранить их:

$stickySlot.Properties.AppSettingNames += “AppSetting1” 
$stickySlot.Properties.AppSettingNames += “AppSetting2” 

Затем после того, как это делается:

Set-AzureRmResource -ResourceName $resourceName -ResourceGroupName -ResourceType “Microsoft.Web/Sites/config” -Properties $stickySlot.Properties -ApiVersion “2015-08-01" 

Взято из: https://msftplayground.com/2016/02/adding-azure-app-service-application-settings-powershell/

+0

Первая команда не работает, даже когда я помещаю в $ resourceGroupName. –

0

Есть теперь два новых командлеты для управления настройками слота: Get-AzureRmWebAppSlotConfigName и Set-AzureRmWebAppSlotConfigName

Например, я хотел, чтобы мои строки подключения не были конфигурацией слота, поэтому я выполнил:

Set-AzureRmWebAppSlotConfigName -ResourceGroupName MyRg -Name MyWebApp -RemoveAllConnectionStringNames 

 Смежные вопросы

  • Нет связанных вопросов^_^