在通过ARM模板运行DSC配置之前配置Azure VM LCM
问题描述:
我试图通过ARM模板配置Azure VM,并且需要在VM上设置本地配置管理器以允许在运行DSC配置之前重新启动。我有一种方法有时可以使用,但并不总是如此。我通过Azure运行以下脚本CustomScriptExtension在通过ARM模板运行DSC配置之前配置Azure VM LCM
[DscLocalConfigurationManager()]
Configuration ConfigureLcm {
Node localhost {
Settings {
RebootNodeIfNeeded = $true
}
}
}
if (!(Get-DscLocalConfigurationManager).RebootNodeIfNeeded) {
ConfigureLcm -OutputPath C:\Config
Set-DscLocalConfigurationManager -Path C:\Config
}
然后是DSC扩展。看起来像CustomScriptExtension可以工作,但是DSC扩展可能会将RebootNodeIfNeeded更改回false。 DSC扩展取决于CustomScriptExtension。
{
"type": "extensions",
"name": "DSC",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]",
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'), '/extensions/configlcm')]"
有没有人经历过这个?
答
DSC扩展将覆盖本地配置管理器(LCM),如果您没有LCM的显式设置,它们将恢复为默认设置。因此,您需要在您用于DSC扩展的配置功能中重新设置它:
Configuration Main
{
Node localhost
{
LocalConfigurationManager
{
RebootNodeIfNeeded = $true
...
}
# Your other resources
...
}
}´