Как обновить параметры для развертывания шаблона ресурса Azure с помощью Powershell - PullRequest
1 голос
/ 20 апреля 2020

Я создал шаблон для создания нового ресурса SQL в Azure.

. Из этого я получаю два стандартных файла:

  • template. json
  • параметры. json

Теперь я хочу создать развертывание с использованием Powershell.

У меня могут быть просто разные параметры. json файлы с паролями, написанными непосредственно в них (это работает), но я хочу сохранить пароли вне контроля версий. Однако я не могу найти способ обновить параметры без обновления файла.

Вот мой код (с использованием Test-AzResourceGroupDeployment , с целью перехода на New-AzResourceGroupDeployment после того, как это сработает):

$templatePath = "./sqlserver/template/template.json"
$paramsPath = "./sqlserver/template/parameters.json"
$administratorLogin = "adminUserName"
$administratorLoginPassword = "ARealPasswordHere!!!"
$databaseName = "MyDatabaseName"
$serverName = "serverforthedatabase"


$paramsFileText = [System.IO.File]::ReadAllText($paramsPath)
$params = ConvertFrom-Json $paramsFileText -AsHashtable
$params.parameters.administratorLogin = $administratorLogin
$params.parameters.administratorLoginPassword = ConvertTo-SecureString $administratorLoginPassword -AsPlainText -Force 
$params.parameters.databaseName = $databaseName
$params.parameters.serverName = $serverName

# Run New-AzResourceGroupDeployment when working
Test-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateFile $templatePath `
-TemplateParameterObject $params

Если я выполню вышеприведенное, я получу приглашение для каждого параметра в файле параметров.

Если я изменю -TemplateParameterObject $params на -TemplateParameterObject $params.parameters, я получу ошибку 'Template parameter JToken type is not valid.

Если я попытаюсь сделать TemplateObject, чтобы оба входа были объектами, это тоже не удастся.

Test-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateObject $templateObj `
-TemplateParameterObject $params.parameters

Как это сделать, пожалуйста?

1 Ответ

0 голосов
/ 20 апреля 2020

удалось выработать ответ.

Вы должны ввести параметры, которые вы будете sh переопределять, как часть скрипта. Протестировал с New-AzResourceGroupDeployment и все хорошо.

Вот мой рабочий код:

$templatePath = "./sqlserver/template/template.json"
$paramsPath = "./sqlserver/template/parameters.json"
$administratorLogin = "adminUserName"
$administratorLoginPassword = ConvertTo-SecureString "ARealPasswordHere!!!" -AsPlainText -Force
$databaseName = "MyDatabaseName"
$serverName = "serverforthedatabase"


Test-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateFile $templatePath `
-TemplateParameterFile $paramsPath `
-administratorLogin $administratorLogin `
-administratorLoginPassword $administratorLoginPassword `
-databaseName $databaseName `
-serverName $serverName

and just for added clarity for searchers, here is part of the `parameters.json` file, so you can see some of the parameters I'm overriding here.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "administratorLogin": {
            "value": ""
        },
        "administratorLoginPassword": {
            "value": ""
        },
        "collation": {
            "value": "SQL_Latin1_General_CP1_CI_AS"
        },
        "databaseName": {
            "value": ""
        },
        "tier": {
            "value": "Basic"
        },
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...