我已经构建了一个嵌套的ARM模板,它设置了VM并将其添加到Azure DSC自动化服务器进行最终配置。此设置使用以下Git资源来设置拉服务器:
这个源使用ARM模板中的DSC扩展来配置VM,用于拉服务器所在的位置、注册键、设置以及要应用的DSC节点配置,这就是我可以配置机器的所有内容。
我的DSC配置的一部分要求更新机器描述:
Registry ChangeDescription
{
Ensure = "Present"
Key = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
ValueName = "srvcomment"
ValueData = "my-super-awesome-computer-description"
ValueType = "String"
}我希望我的ARM模板能够向DSC配置传递一个参数,其中最终用户在ARM部署时输入了计算机描述(我将使用Azure模板部署作为用户使用的“库存”映像)。
ARM参数:
"computerDescription": {
"type": "string",
"metadata": {
"description": "The description name of the VM."
}
},计算机/虚拟机器/扩展属性:
{
"Name": "computerDescription",
"Value": "[parameters('computerDescription')]",
"TypeName": "System.String"
}DSC:
Registry ChangeDescription
{
Ensure = "Present"
Key = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
ValueName = "srvcomment"
ValueData = $ComputerDescription
ValueType = "String"
}通过Git上的源代码,我知道您可以将参数传递给DSC文件,因为机器就是这样设置的,但是我只能看到它被传递给.ps1脚本,它实际上为DSC设置了机器。因此,我不知道如何将参数传递到节点配置完成设置的下一阶段。
我不一定需要这个设置在DSC点,它可以通过模板,如果我知道如何,或可能在其他地方,有人可能知道?本质上,它只需要设置一次。
有什么想法吗?
编辑4c74356b41问题。
我仍然不确定如何将参数computerDescription用作commandToExecute的字符串。这是我想出的PS脚本,但实际上并不知道如何将该字符串变成PS的变量。
Param ( [string] $psVariable )
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\" -Name "srvcomment" -Value $psVariable -PropertyType String这就是我的commandToExecute
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File ', variables('asdfcseScriptFolder'), '/', variables('asdfcseScriptFileName'))]"我不知道在哪里放computerDescription参数.?
发布于 2017-11-07 11:31:48
如果您已经使用DSC扩展到机上的Azure自动化,有一个预定义的配置,您可能不想改变。因此,在您的情况下,我想说使用脚本扩展和一个简单的powershell 1衬板来设置这个注册表值要容易得多,您可以很容易地使用arm模板将其参数化。
https://stackoverflow.com/questions/47156652
复制相似问题