我终于使用Azure PowerShell SDK方法,特别是Publish-AzureVMDscConfiguration -> Set-AzureVMDscExtension -> Update-AzureVM
组合,使用Desired State Configuration自动化我们的发布过程。
在a way to send my build outputs somewhere accessible by the VM中考虑了一段时间之后,我最终采用了将构建包附加到上传到Azure存储的配置包中的策略。
我现在的问题是,只要VM中的PowerShell DSC扩展程序开始下载该程序包,它的内存消耗就会消失。当我打开任务管理器时,我可以看到新创建的PowerShell进程从30兆字节到300兆字节再到1.3GB,完全破坏了我的虚拟机。
昨天下午,我离开工作并让它处理,但是当我今天登录VM时,包含我的构建输出的内部zip文件在DSCWork文件夹中有0个字节。我的问题是甚至如果它最终工作,它需要很长的时间并使我的VM无用......我甚至无法在Windows之间进行更改远程访问,因为机器完全停留在100%的RAM使用率。
为什么PowerShell需要花费大量内存和时间来下载我的配置包?它只有60MB拉链,大约200MB解压缩。我能做些什么来阻止这种情况发生吗?
更新
我刚才测试了它,它终于正确完成了。花了一个多小时,但文件都在那里......但这是不可接受的。
答案 0 :(得分:2)
此问题应在扩展的下一次迭代中解决。同时,您可能需要考虑将构建内容上传到与配置ZIP包分开的blob(您可以使用Set-AzureStorageBlobContent)。
然后,您可以使用原始配置中的远程文件或脚本资源来下载blob。请务必在配置中添加适当的依赖项,以便在使用之前下载blob。
configuration DownloadSample
{
Import-DscResource -Module xPSDesiredStateConfiguration
xRemoteFile Download
{
Uri = 'https://....blob.core.windows.net/windows-powershell-dsc/foo.zip?sv=...'
DestinationPath = 'd:\tmp\download.zip'
}
}