我正在尝试使用ARM模板和所需状态配置(DSC)将虚拟机规模集部署到Azure . 我已经创建了DSC configuraiton并在一个单独的VM上验证它正在运行 . 在ARM模板中,我有以下DSC扩展的定义:
{
"name": "Microsoft.Powershell.DSC",
"properties": {
"publisher": "Microsoft.Powershell",
"type": "DSC",
"typeHandlerVersion": "2.9",
"autoUpgradeMinorVersion": true,
"settings": {
"configuration": {
"url": "publicstoragebloburi/DSC/DSC.zip",
"script": "Main.ps1",
"function": "Main"
},
"configurationArguments": {
"MachineName": "localhost",
"WebDeployPackagePath": PublicStorageBlobPath_App.zip",
"UserName": "[parameters('adminUsername')]",
"Password": "[parameters('adminPassword')]",
"AppName": "FileScanApp",
"AppPath": "C:\\inetpub\\dev\\MyWebApp"
}
}
Main.ps1文件以及名称Main的Configratuion确实存在 . Main.ps1位于ZIP存档的根目录中 . 当扩展程序在VM上运行时,它正在尝试在以下目录中找到Main.ps1文件:C:\ Packages \ Plugins \ Microsoft.Powershell.DSC \ 2.71.1.0 \ bin .. \ DSCWork \ DSC.1 \ Main .ps1,但是当我远程连接到机器时,文件夹中没有Main.ps1,我收到以下错误:
{"code":"DeploymentFailed","message":“至少一个资源的部署操作失败,请列出部署操作的详细信息,请参阅https://aka.ms/arm-debug的使用细节","细节":[{"代码":"冲突","消息":" {\ r \ n \ "status": . \ "Failed", \ r \ n \ "error":{\ r \ n \ "code":\ "ResourceDeploymentFailure",\ r \ n \ "message":\ "The resource operation completed with terminal provisioning state 'Failed'.",\ r \ n \ "details":\ r \ N {\ r \ n \ "code":\ "VMExtensionProvisioningError" ,\ r \ n \ "message":\ "VM has reported a failure when processing extension 'Microsoft.Powershell.DSC'. Error message: \"的DSC扩展接收到不正确的输入:在执行脚本或模块'Main.ps1'发生错误:术语'C:\Packages\Plugins\Microsoft.Powershell.DSC\2.71.1.0\bin\..\DSCWork\DSC.1\Main.ps1'未被识别为cmdlet,函数,脚本文件,或可运行的程序的名称 . 检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试.. \ n请更正输入并重试执行扩展 . \ "." \ r \ n} \ r \ n] \ r \ n} \ r \ n}“}}}
请有人告诉我,我做错了什么?我是按照这种方式进行的,这是在github上提供的官方示例ARM模板中实现的 . 谢谢!
2 回答
根据我的评论我遇到了同样的问题检查您的DSC.zip文件 . 我的zip文件是/DSC/script.ps1 . 它应该是/script.ps1
这就是为什么它找不到我的文件 .
配置对象中的url属性需要是可在Internet上访问的URL . zip文件将下载到VM上的该位置并从那里运行 . 它存储在VM上的位置不是模板需要知道的,但它确实需要知道在互联网上找到它的位置 .
这是一个示例,说明如何使其端到端工作:https://github.com/Azure/azure-quickstart-templates/blob/master/201-vm-win-iis-app-ssl/azuredeploy.json
(还有其他一些)