是否可以通过Azure资源管理器将多个DSC配置应用于一个虚拟机?
目前我使用的是这样的东西:
struct
如果没有,您可以自动合并多个DSC吗?
情景是:
答案 0 :(得分:2)
有一些方法,我使用的一个简单而有用的方法是嵌套配置,将所有DSC配置混合到一个配置中。
您正在创建没有任何特定节点的配置。然后使用分组所需配置的节点创建配置。
这个简单的例子可以作为我正在谈论的内容的指南。有关详细信息,请参阅[MS doc]] 1。
Configuration WindowsUpdate
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Service ModulesInstaller {
Name = "TrustedInstaller"
DisplayName = "Windows Modules Installer"
StartupType = "Disabled"
State = "Stopped"
}
}
Configuration ServerManager
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Registry DoNotOpenServerManagerAtLogon {
Ensure = "Present"
Key = "HKLM:\SOFTWARE\Microsoft\ServerManager"
ValueName = "DoNotOpenServerManagerAtLogon"
ValueData = 1
DependsOn = "[Registry]NoAutoUpdate"
}
}
Configuration VMConfig
{
Node localhost
{
WindowsUpdate NestedConfig1 {}
ServerManager NestedConfig2 {}
}
}
通过这种方法,我可以轻松地在每个DSC扩展上调用机器条目配置,这只是我想要应用的配置的组合。
"publisher": "Microsoft.Powershell",
"type": "DSC",
"typeHandlerVersion": "2.20",
"configuration": {
"url": "[concat(parameters('_artifactsLocation'), '/Configuration.zip')]",
"script": "Configuration.ps1",
"function": "FrontEndVM"
}
另一种方法是对同一台机器执行多个ARM DSC扩展。这里的技巧是始终使用相同的名称,因为只能执行一个DSC扩展。
这种方法的警告是机器上的先前配置被覆盖。从功能的角度来看,结果可能是相同的,但如果您希望DSC本地管理器纠正错误的配置,则只能使用最新的配置。
答案 1 :(得分:1)
DSC目前仅允许单个配置,因此如果您将2个DSC扩展部署到同一个VM(我不确定它是否真的有用),第二个配置将覆盖第一个配置。
你可能会堆叠DSC和CustomScript,但由于DSC可以运行脚本,我不知道为什么你需要这样做...
你的情景是什么?