首页 > 解决方案 > Azure 开发测试实验室:如何参数化资源

问题描述

我正在尝试创建一个 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"
  }
}

总而言之,我能够部署:

我无法:

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

标签: azurepowershellarm-templateazure-devtest-labs

解决方案


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

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


推荐阅读