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

Is it possible for DSC to deal with the creation and advanced configuration of Virtual Machines?

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

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

已阅读 DSC documentation I thought that is might be possible using 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 配置方面也遇到了问题,但这是一个单独的问题。所以我想我的问题是:

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

您 运行 遇到的问题是 DSC 所做的概念性问题。

阅读您链接的 document,上面写着

Configurations are declarative PowerShell scripts which define and configure instances of resources. Upon running the configuration, DSC (and the resources being called by the configuration) will simply “make it so”, ensuring that the system exists in the state laid out by the configuration.

DSC 旨在配置资源的实例。在其基本级别上,DSC 配置是 运行 在一台机器上,将那台机器配置到指定的状态。

DSC 脚本应该被限制在它们 运行 所在的机器的边界内工作。这似乎是您遇到的问题的一部分。

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

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

在高层次上,您的管道看起来像这样

  1. 运行 部署配置以创建新 VM。在该 VM 运行ning 时,配置已完成。它没有其他动作。
  2. VM 构建并启动,其初始配置的一部分是 运行 一个 bootstrap 脚本,告诉它它的功能。
  3. VM 联系 DSC 服务器,告诉它它的功能,并请求它可用的任何配置。
  4. VM 下载其配置,并将自身配置为 Sharepoint 服务器(或 SQL 服务器等)
  5. 如果存在外部依赖项,即您可以在 SQL 完成之前安装 Sharepoint,那么只需要一个共享文件的依赖项即可。即 if \server\share\sqlcompleted.txt exists 或任何其他适合您环境的机制。

以这种方式构建服务器会消除依赖性,这意味着如果您决定要切换到 ESX,那么您只需更改部署脚本即可。同样,如果您将所有内容都移动到云部署中。