在Windows PowerShell所需状态配置中,您可以定义功能:
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
,还会安装IIS
和SQL
功能。我可以理解的IIS
功能,因为ASP
取决于此。但SQL
功能未被定义为"现在",而另一个"现在"特征
是否可以定义这些基本功能(作为一种存储库),但只能安装所需的功能?
答案 0 :(得分:2)
是和否。
首先,我想指出DependsOn
告诉DSC哪些订单做事情,并且就DSC理解而言。它只是让您决定需要在一个或多个其他资源之后执行某些资源。
离开Ensure = 'Present'
,如果有效,可能只是默认为'Present'
;没有办法把资源放在那里(没有额外的代码),这不会被执行。
我不确定"存储库"是什么意思?除非您只是想让它出现在Configuration {}
区块以供将来参考或使用。
我的意思是"其他代码"是你可以控制从这个脚本生成配置时使用哪些资源。
稍微退一步,你所拥有的代码块有一个配置 script ,你必须执行它才能生成一个MOF文件,这将是应用于节点的实际内容。 / p>
该脚本实际上是powershell,因此您可以应用您的逻辑来确定在该点(当生成MOF时)应用的内容。这种情况发生在生成MOF的机器的上下文中,而不是在目标节点上,因此您无法在配置应用程序时使用任何需要在目标上运行代码的逻辑。
DSC通过使用-ConfigurationData
参数以及$AllNodes
和$Node
等自动变量,提供了一些内置功能。</ p>
我想在这里放一些代码而不仅仅是链接和解释,但你真的需要充分了解这些部分何时何地融合在一起。
我认为最重要的要点是:
-ConfigurationData
的方式。看看这些: