我想使用Azure资源管理器(ARM)在Azure中部署VM,然后在VM部署后的内部运行PowerShell脚本进行配置。
我可以使用以下类似的方法来做到这一点:https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-vsts-agent
但是,该模板从GitHub获取PowerShell脚本。作为部署的一部分,我想将脚本上传到Azure存储,然后让VM从Azure存储获取脚本并运行它。我该如何处理关于PowerShell脚本的依赖性,因为它必须在执行之前先存在于Azure存储中。
当前,我具有在部署过程中安装VSTS代理的功能,但是该脚本是从GitHub下载的,我不想这样做,我希望VSTS代理的安装脚本成为我的ARM的一部分项目。
{
"name": "vsts-build-agents",
"type": "extensions",
"location": "[parameters('location')]",
"apiVersion": "2017-12-01",
"dependsOn": [
"vsts-build-vm"
],
"tags": {
"displayName": "VstsInstallScript"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.9",
"settings": {
"fileUris": [
"[concat(parameters('_artifactsLocation'), '/', variables('powerShell').folder, '/', variables('powerShell').script, parameters('_artifactsLocationSasToken'))]"
]
},
"protectedSettings": {
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -Command \"& {', './', variables('powerShell').script, ' ', variables('powerShell').buildParameters, '}\"')]"
}
}
}
我想我的问题确实是关于如何将_azurestoragelocation
设置为在部署中刚刚上载脚本的蔚蓝存储位置。
答案 0 :(得分:1)
鸡肉\鸡蛋问题。您无法使用arm模板上传到Azure存储,您需要使用脚本来上传到Azure存储,但是如果您在vm上具有该脚本来上传它,那么您确实不需要上传它。
话虽这么说,为什么不使用VSTS代理扩展?{
"name": "xxx",
"apiVersion": "2015-01-01",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://gallery.azure.com/artifact/20161101/microsoft.vsts-agent-windows-arm.1.0.0/Artifacts/MainTemplate.json"
},
"parameters": {
"vmName": {
"value": "xxx"
},
"location": {
"value": "xxx"
},
"VSTSAccountName": {
"value": "xxx"
},
"TeamProject": {
"value": "xxx"
},
"DeploymentGroup": {
"value": "Default"
},
"AgentName": {
"value": "xxx"
},
"PATToken": {
"value": "xxx"
}
}
}
},
答案 1 :(得分:0)
您是说如何像快速入门示例中那样设置_artifactsLocation?如果是这样,您有2个选项(或3个选项)
1)使用QS存储库中的脚本,_artifactsLocation参数的defaultValue将为您设置该值...
2)如果您想从示例的本地副本中进行自定义,只需在回购中使用Deploy-AzureResourceGroup.ps1,它将相应地暂存并设置值(使用-UploadArtifacts开关时)
3)自己将PS1登台,并手动设置_artifactsLocation和_artifactsLocationSasToken的值
您也可以从gallery.azure.com进行部署,但这将迫使您使用存储在厨房中的脚本(与使用GitHub中的默认值相同)
有帮助吗?