我通过安装了一些自定义软件堆栈的专用 Windows 10 镜像在 Azure 中创建了一个规模集。
当我尝试对此运行管道作业时,一切似乎都工作正常,直到代理突然被 Azure DevOps 杀死为不健康。当我尝试了几件事时,我发现这种任意杀戮在某种程度上与在规模集上运行第二个作业相关。我的猜测是,Azure Devops 无法处理具有相同计算机名称的多个代理,默认情况下,当我从专门的 Azure VM 镜像创建 ScaleSet 时就是这种情况。
是否有任何解决方法,或者 Azure Devops 是否仅支持通用 VM 中的规模集? 实际上,我尝试使用 VMSS 的自定义脚本扩展来更改主机名,但没有成功。
最佳答案
正如 @JohnHanley 提到的,您需要在对虚拟机进行镜像之前运行 sysprep 命令。您可以使用非通用图像,但正如您所指出的,它还包含计算机名称并且不应用前缀。
作为停止虚拟机并对其进行镜像之前的最后一步,请在 PowerShell 中运行此命令
$sysprepPath = $env:windir + "\system32\sysprep\sysprep.exe"
Start-Process -FilePath $sysprepPath -ArgumentList "/generalize /oobe /quit /quiet" -Verb RunAs -Wait
关于azure - 避免 Azure Devops 中的专用规模集发生主机名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68505185/