【发布时间】:2016-04-27 21:51:49
【问题描述】:
我在使用部署模板将 dscExtension 部署到 Azure 虚拟机规模集 (VMSS) 时遇到了一些问题。
这是我将其添加到模板中的方式:
{
"name": "dscExtension",
"properties": {
"publisher": "Microsoft.Powershell",
"type": "DSC",
"typeHandlerVersion": "2.9",
"autoUpgradeMinorVersion": true,
"settings": {
"ModulesUrl": "[concat(parameters('_artifactsLocation'), '/', 'MyDscPackage.zip', parameters('_artifactsLocationSasToken'))]",
"ConfigurationFunction": "CmvmProcessor.ps1\\CmvmProcessor",
"Properties": [
{
"Name": "ServiceCredentials",
"Value": {
"UserName": "parameters('administratorLogin')",
"Password": "parameters('administratorLoginPassword')"
},
"TypeName": "System.Management.Automation.PSCredential"
}
]
}
}
}
VMSS 本身已成功部署,但是当我浏览各个 VM 的 InstanceView 时,dscExtension 显示失败状态并显示错误消息。
我遇到的问题如下:
ARM 部署不会在重新部署时尝试更新 dscExtension。我习惯于 MSDeploy Web 应用程序扩展,其中更新工件并在每个新部署上重新部署代码。我不知道如何强制它用新的二进制文件更新 dscExtension。事实上,它似乎只是在第一次部署 VMSS 时出错,然后它甚至不会再试一次。
我得到的错误是旧代码不再存在。
我之前在自定义 DSC Powershell 脚本中有一个错误,我尝试使用 -replace 运算符,该运算符应该创建一个 $Matches 变量,但它说$Matches 不存在。
无论如何,我已经重构了代码并删除了整个资源组,然后重新部署。 dscExtension 仍然给出相同的错误。我已验证我的 DSC .zip 所在的 blob 存储帐户不再具有能够生成此错误消息的代码。 Azure 必须在某处缓存 dscExtension。我无法让它使用我在每次部署之前上传的新 blob .zip。
对 DSC 扩展以及如何强制其在部署时进行更新有任何见解吗?
【问题讨论】:
标签: azure azure-virtual-machine azure-resource-manager