1

我正在尝试创建一个 PowerShell 脚本,该脚本将部署 Azure DevTest 实验室的一个实例,在那里创建一个环境,以及诸如数据块、天蓝色数据工厂等资源。这是我负责此操作的实验室模板的一部分。

       "resources":[
            {
               "apiVersion":"2018-09-15",
               "name":"LabVmsShutdown",
               "location":"[parameters('location')]",
               "type":"schedules",
               "dependsOn":[
                  "[resourceId('Microsoft.DevTestLab/labs', parameters('labResourceName'))]"
               ],
               "properties":{
                  "status":"Enabled",
                  "timeZoneId":"GMT Standard Time",
                  "dailyRecurrence":{
                     "time":"0100"
                  },
                  "taskType":"LabVmsShutdownTask",
                  "notificationSettings":{
                     "status":"Disabled",
                     "timeInMinutes":30
                  }
               }
            },
            {
               "apiVersion":"2018-09-15",
               "name":"[concat('Dtl', parameters('labResourceName'))]",
               "type":"virtualNetworks",
               "location":"[parameters('location')]",
               "dependsOn":[
                  "[resourceId('Microsoft.DevTestLab/labs', parameters('labResourceName'))]"
               ]
            },
            {
               "apiVersion":"2018-09-15",
               "name":"Public Environment Repo",
               "type":"artifactSources",
               "location":"[parameters('location')]",
               "dependsOn":[
                  "[resourceId('Microsoft.DevTestLab/labs', parameters('labResourceName'))]"
               ],
               "properties":{
                  "status":"Enabled"
               }
            },
            {
               "apiVersion":"2018-09-15",
               "name":"[parameters('repositoryName')]",
               "type":"artifactSources",
               "dependsOn":[
                  "[resourceId('Microsoft.DevTestLab/labs', parameters('labResourceName'))]"
               ],
               "properties":{
                  "uri":"MY_URL",
                  "armTemplateFolderPath":"MY_PATH",
                  "displayName":"DevTestLab",
                  "branchRef":"features/devops-development",
                  "securityToken":"MY_TOKEN",
                  "sourceType":"VsoGit",
                  "status":"Enabled"
               }
            },
            {
               "apiVersion":"2018-09-15",
               "name":"[parameters('userId')]",
               "type":"users",
               "location":"[parameters('location')]",
               "dependsOn":[
                  "[resourceId('Microsoft.DevTestLab/labs', parameters('labResourceName'))]"
               ],
               "properties":{
                  "status":"Enabled"
               },
               "resources":[
                  {
                     "name":"devtestlaab",
                     "type":"environments",
                     "apiVersion":"2018-09-15",
                     "location":"[parameters('location')]",
                     "properties":{
                        "deploymentProperties":{
                           "armTemplateId":"[concat(resourceId('Microsoft.DevTestLab/labs/artifactsources', parameters('labResourceName'), parameters('repositoryName')), '/armTemplates/DevTestLab')]"
                        },
                        "armTemplateDisplayName":"DevLab Deployment Script"
                     },
                     "dependsOn":[
                        "[resourceId('Microsoft.DevTestLab/labs/users', parameters('labResourceName'), parameters('userId'))]"
                     ]
                  }
               ]
            }
         ]
      }
   ]

它在大多数情况下都可以正常工作。但是,我无法为我的内部模板传递参数。它只需要ref_branch在给定时刻在我的这些模板中硬编码的任何内容并部署它。

在此处输入图像描述

我尝试遵循以下模板并添加参数部分,但它被完全忽略了。

{
  "name": "string",
  "type": "Microsoft.DevTestLab/labs/users/environments",
  "apiVersion": "2018-09-15",
  "location": "string",
  "tags": {},
  "properties": {
    "deploymentProperties": {
      "armTemplateId": "string",
      "parameters": [
        {
          "name": "string",
          "value": "string"
        }
      ]
    },
    "armTemplateDisplayName": "string"
  }
}

总而言之,我能够部署:

  • 实验室
  • 环境
  • 本实验室内的资源。

我无法:

  • 将任何参数传递给我的实验室环境中的资源。

文档非常稀缺,所以我不确定问题可能是什么。

4

2 回答 2

0

通常在 TFS 管道中,您将定义变量并将它们作为参数传递给脚本。请参阅此处的示例。

但是,由于您正在专门处理 ARM 模板并考虑控制流(外/内循环等),您还可以查看其他几个选项

于 2021-04-09T03:18:52.433 回答
0

AFAI 明白,你的模板看起来不对。请查看有关编写 Azure 资源管理器 (ARM) 模板的快速指南,以了解如何使用参数。

而且,对于PowerShell 脚本部署,您可以使用以下命令来部署带有参数的 ARM 模板:

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-template-or-bicep> `
  -TemplateParameterFile c:\MyTemplates\storage.parameters.json

或者

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.json `
  -TemplateParameterUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-storage-account-create/azuredeploy.parameters.json

让我知道这是否有帮助。

于 2021-04-01T04:49:09.100 回答