azure - 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"
}
}
总而言之,我能够部署:
- 实验室
- 环境
- 本实验室内的资源。
我无法:
- 将任何参数传递给我的实验室环境中的资源。
文档非常稀缺,所以我不确定问题可能是什么。
解决方案
通常在 TFS 管道中,您将定义变量并将它们作为参数传递给脚本。请参阅此处的示例。
但是,由于您正在专门处理 ARM 模板并考虑控制流(外/内循环等),您还可以查看其他几个选项
- 你看过Azure Bicep ( git repo ) 吗?
- 如果您的组织想要走这条路,您也可以使用 Terraform 。
推荐阅读
- python - tf.group 和 tensorflow 集合有什么不同?
- c# - 临时更改一个值(文本颜色)并在一些操作后恢复它(打印文本)
- string - 在字符串上使用范围时发生类型不一致
- javascript - 如何从猫鼬的另一个集合中计算文档?
- javascript - 模态窗口应该每天只为每位访客打开一次
- python - 高学习率使模型训练失败
- javascript - 以“安全”的方式嵌入其他网站
- kubernetes - 将 cni 插件从 flannel 切换到 calico 然后 flannel 后 Pod 无法启动
- python - Python - UnicodeEncodeError:'ascii'编解码器无法编码位置 42-43 中的字符:序数不在范围内(128)
- javascript - react-native run-ios 需要很长时间才能构建,有时永远不会