DSC是否可以处理虚拟机的创建和高级配置?

时间:2016-03-17 09:25:16

标签: powershell sharepoint hyper-v dsc

我正在尝试使用PowerShell DSC创建配置,这有助于我使用虚拟机创建SharePoint场。假设我安装了Hyper-V的Windows 10计算机,我希望我的配置脚本能够创建所需的VM,例如DC,SPA1,SPw1,SPW2和SPDB1,配置其网络连接并连接到域控制器(DC1) ,然后继续安装SharePoint / SQL Server先决条件和安装,然后再继续配置服务器场。

我已经创建了完成各个阶段的配置,但我无法弄清楚如何将它们连接到一个精心策划的庄园中。例如,我可以创建VM或执行SharePoint的安装和配置,但我无法使这些配置协同工作。

阅读DSC documentation我认为可能使用composite resources,但我无法让配置在创建后继续使用新虚拟机。

从复合资源文档:

configuration RenameVM
{

    Import-DscResource -Module TestCompositeResource
    Node localhost
    {
        xVirtualMachine VM
        {
            VMName = "Test"
            SwitchName = "Internal"
            SwitchType = "Internal"
            VhdParentPath = "C:\Demo\VHD\RTM.vhd"
            VHDPath = "C:\Demo\VHD"
            VMStartupMemory = 1024MB
            VMState = "Running"
        }
    }

    Node "192.168.10.1"
    {
        xComputer Name
        {
            Name = "SQL01"
            DomainName = "fourthcoffee.com"
        }
    }
}

理想情况下,节点名称将在配置数据中动态声明,而不是明确定义的I.P地址。我也在使用Hyper-V配置创建多个交换机时出现问题,但这是一个单独的问题。所以我想我的问题是:

是否可以创建处理虚拟机创建和高级配置的配置?

1 个答案:

答案 0 :(得分:2)

你遇到的问题是DSC的概念之一。

阅读您关联的document

  

配置是声明性PowerShell脚本,用于定义和配置资源实例。在运行配置时,DSC(以及配置调用的资源)将简单地“实现”,确保系统处于配置所规定的状态。

DSC旨在配置资源的实例。在基本级别,DSC配置在单个机器上运行,将该机器配置为指定状态。

应限制DSC脚本在其运行的机器范围内工作。这似乎是您遇到的问题的一部分。

如果你有两套脚本。部署VM脚本,针对hyper-v服务器和Sharepoint构建运行,然后在VM启动后配置VM。您似乎要做的是从hyper-v部署脚本中启动Sharepoint脚本。在那个阶段虽然Sharepoint服务器超出了hyper-v服务器的控制范围(除了它的原子VM功能,启动,停止,删除等)

相反,我建议你做的是将它们视为两个完全独立的实体。创建VM和安装Sharepoint之间不需要脚本连接。

在高级别,您的管道看起来像这样

  1. 运行部署配置以创建新VM。在该VM运行时,该配置已完成。它没有其他行动。
  2. 虚拟机构建并启动,其初始配置的一部分是运行一个告诉它功能的引导脚本。
  3. 虚拟机与DSC服务器联系,告知其功能,并请求任何可用的配置。
  4. 虚拟机下载其配置,并将自身配置为Sharepoint服务器(或SQL Server等)
  5. 如果存在外部依赖项,即您可以在SQL完成之前安装Sharepoint,那么只需拥有一个共享文件的依赖项。即if \\server\share\sqlcompleted.txt exists或其他适合您环境的机制。
  6. 以这种方式构建服务器会消除依赖关系,这意味着如果您决定要切换到ESX,那么您需要更改的就是部署脚本。同样,如果您将所有内容移至云部署。