通过ARM模板DSC(或不是DSC)设置计算机描述

时间:2017-11-07 11:22:10

标签: git azure dsc

我已经构建了一个嵌套的ARM模板,用于设置VM并将其添加到Azure DSC自动化服务器以进行最终配置。此设置使用以下Git资源来设置拉取服务器:

https://github.com/Azure/azure-quickstart-templates/tree/master/dsc-extension-azure-automation-pullserver

此源使用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模板部署作为'库存'图像供人们使用)。

Azure模板:https://portal.azure.com/#blade/HubsExtension/Resources/resourceType/Microsoft.Gallery%2Fmyareas%2Fgalleryitems

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参数放在哪里......?

1 个答案:

答案 0 :(得分:1)

如果您已经在板载Azure Azure上使用DSC扩展,则可能不希望更改预定义的配置。所以在你的情况下,我会说只是使用脚本扩展和一个简单的PowerShell 1线程来设置这个注册表值要容易得多,你可以使用arm模板轻松地参数化