我已经构建了一个嵌套的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."
}
},
Microsoft.Compute / virtualMachines / extensions属性:
{
"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
参数放在哪里......?
答案 0 :(得分:1)
如果您已经在板载Azure Azure上使用DSC扩展,则可能不希望更改预定义的配置。所以在你的情况下,我会说只是使用脚本扩展和一个简单的PowerShell 1线程来设置这个注册表值要容易得多,你可以使用arm模板轻松地参数化