在Azure资源管理器(ARM)中如何通过DSC扩展来使用WMF4


在Azure的DSC扩展2.7版中,我们添加了支持,让你的虚拟机保持最新的WMF4.0。这篇博客会向您展示在Azure 资源管理器(ARM)模板中如何使用这个功能。因此,我会使用Azure资源管理器工具,它是被包含在.NET 版本的Azure SDK 2.6中,一起发布的。我假设您已经安装了Visual Studio 2015。同时,我也会假设您已经阅读了在Azure云服务管理器(ASM)中通过Azure DSC扩展来使用WMF42,因为在那篇文章中我们有描述过一些词汇的分别代表什么。MSDN上有一篇入门级的主题‘创建和部署Azure资源组部署项目’,有讲述到我们将要使用到的工具。所以我建议您在阅读本文遇到相关的知识点时可以先去浏览那篇主题。

在下面例子中,我们会为您展示:

  1. 如何设置.NET SDK,因为需要它来向Visual Studio 2015添加工具来设计和部署ARM模板。
  2. 在样在visual studio 中创建ARM工程。
  3. 怎样将DSC添加进ARM模板。
  4. 怎样在已存在的虚拟机上将Json数据发送给配置扩展。

为.NET安装Azure SDK

如果您还没有下载.NET版本Azure SDK,可以直接从这里下载,或者从这里选择不同的版本下载。

创建ARM工程

请查阅MSDN主题怎样创建和部署Azure资源组部署 。

添加Powershell DSC 扩展

一旦你已经创建了自己的工程,你需要添加Powershell DSC 扩展到ARM模板中。

  1. 解决方案浏览器 , 展开模板 
  2. 点击WindowsVirtualMachine.json
  3. 打开 JSON Outline (通常在左面板)
  4. 在 JSON Outline, 展开资源 
  5. 在 JSON Outline, 右击 虚拟机
  6. 在上下文菜单中, 点击添加Azure资源 
  7. 添加资源窗口 , 点击PowerShell DSC扩展 
  8. 添加资源窗口, 在 名称 字段, 输入Microsoft.Powershell.DSC (注意了,要想让SDK正常工作,这里很重要)
  9. 添加资源窗口, 点击 添加

上面的结果会添加一个类似下面的一段SON数据:

{
    "name": "Microsoft.Powershell.DSC",
    "type": "extensions",
    "location": "[variables('location')]",
    "apiVersion": "2015-05-01-preview",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "tags": {
        "displayName": "Microsoft.Powershell.DSC"
    },
    "properties": {
        "publisher": "Microsoft.Powershell",
        "type": "DSC",
        "typeHandlerVersion": "2.1",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "modulesUrl": "[concat(parameters('_artifactsLocation'), '/', 'dsc.zip')]",
            "sasToken": "[parameters('_artifactsLocationSasToken')]",
            "configurationFunction": "[variables('Microsoft.Powershell.DSCConfigurationFunction')]",
            "properties": {
                "nodeName": "[variables('vmName')]"
            }
        },
        "protectedSettings": { }
    }
}

使用新版本的WMF功能

升级扩展的版本

你必须确保你使用的是最新的2.7版扩展。在DSC扩展中的Json数据中,升级”typeHandlerVersion”: “2.1”到”typeHandlerVersion”: “2.7”。这样会将SDC扩展的ARM版本从2.1升级到2.7。

添加属性来配置WMF版本

你必须告诉DSC扩展你想使用哪一个版本的WMF,如果不指定,则默认使用最新的版本。在设置部分,添加一个wmfVersion属性的值为4.0,这里有一个例子:”wmfVersion”: “[parameters(‘wmfVersion’)]”

完成了上面的步骤,JSON配置数据差不多变成了这样:

{
    "name": "Microsoft.Powershell.DSC",
    "type": "extensions",
    "location": "[variables('location')]",
    "apiVersion": "2015-05-01-preview",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "tags": {
        "displayName": "Microsoft.Powershell.DSC"
    },
    "properties": {
        "publisher": "Microsoft.Powershell",
        "type": "DSC",
        "typeHandlerVersion": "2.1",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "modulesUrl": "[concat(parameters('_artifactsLocation'), '/', 'dsc.zip')]",
            "sasToken": "[parameters('_artifactsLocationSasToken')]",
            "configurationFunction": "[variables('Microsoft.Powershell.DSCConfigurationFunction')]",
            "wmfVersion": "4.0",
            "properties": {
                "nodeName": "[variables('vmName')]"
            }
        },
        "protectedSettings": { }
    }
}

部署你的配置

这个解决方案应当包含一个Microsoft.Powershell.DSCConfiguration.ps1,它将使用DSC扩展来部署。

请查询MSDN主题 ‘创建和部署Azure资源组部署工程’ 怎样将一个Azure资源组工程部署到Azure资源组中。

更多关于如何部署的信息还可参考这篇博客:”通过Visual Studio 的资源组来部署一个网站和它的内容 “。

总结

其实如何让你在ARM选择要使用那个版本的WMF,已经足够了。我把我的解决方案放在GitHub 上了,解决方案已经通过编译,并且将WmfVersion作为参数放在了模板中了。这样你就可以随时随意在部署的过程中选择和更改你的版本了。 同时我也更改了默认的DSC配置 中WMF的主版本号,因此即使在你不登陆到机器里面也很方便验证。

注意

Windows 2016技术预览版已经预装了等价的WMF5。因此,在这样的操作系统上来指定WMF4是不合理的选项。

引用

如果您还想对于ARM的概念深入探讨,可以参考Greg Oliver 写的博客为Azure资源管理器的DSC扩展开发DSC脚本

原文作者

原文链接How to use WMF 4 with Azure DSC Extension in Azure Resource Manager (ARM)

本文链接: https://www.pstips.net/how-to-use-wmf-4-with-azure-dsc-extension-in-azure-resource-manager-arm.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注