0

在 Windows PowerShell Desired State Configuration 中,您可以定义功能:

Node $MachineName { 
    # define the IIS Role 
    WindowsFeature IIS { 
        Name = “Web-Server” 
    }

    # define the SQL Role 
    WindowsFeature SQL { 
        Name = “SQL-Server” 
    }

    # require ASP.NET 4.5 
    WindowsFeature ASP { 
        Ensure = “Present” 
        Name = “Web-Asp-Net45” 
        DependsOn = "[WindowsFeature]IIS"
    }
}

使用此设置,不仅ASP可以安装,还可以安装IISSQL功能。IIS我可以理解的功能,因为ASP取决于此。但是该SQL功能没有被定义为“Present”,并且不需要另一个“Present”功能。

是否可以定义这些基本功能(作为一种存储库)但只安装所需的功能?

4

1 回答 1

2

是和不是。

首先,我想指出的是,它DependsOn告诉 DSC执行操作的顺序,这就是 DSC 所理解的。它只是让您决定某些资源需要在一个或多个其他资源之后执行。

省略Ensure = 'Present',如果它有效,很可能只是默认为'Present'; 没有办法将资源放在那里(没有额外的代码),不会被执行。

我不确定您所说的“存储库”是什么意思,除非您只是想让它出现在Configuration {}块中以供将来参考或使用。

我所说的“附加代码”的意思是,当您从该脚本生成配置时,您可以控制使用哪些资源。

退后一步,您拥有的代码块有一个配置脚本,您必须执行该脚本才能生成 MOF 文件,然后将其应用于节点的实际内容。

该脚本实际上是 powershell,因此您可以将您的逻辑应用于当时应用的内容(生成 MOF 时)。这发生在生成 MOF 的机器的上下文中,而不是在目标节点上,因此您不能使用任何需要在配置应用程序时在目标上运行代码的逻辑。

DSC 有一些内置的东西来促进这一点,通过使用-ConfigurationData参数和自动变量,如$AllNodes$Node

我想在这里放一些代码,而不仅仅是链接和解释,但您确实需要全面了解这些部分何时何地组合在一起。

我认为最重要的要点是:

  • 您编写的配置(如代码块中所示)是 Powershell 代码,因此您可以使用逻辑来确定哪些资源应用于哪个节点。
  • 在目标节点启动或配置之前,配置的执行通常发生在不是目标节点的计算机上,因此请考虑执行的上下文。
  • 查看-ConfigurationDataMicrosoft 示例中使用的方法。

看看这些:

于 2014-12-29T21:19:51.283 回答