假设我在DSC设置中有两个角色,我的设置中有不同数量的节点:
$configdata = @{
AllNodes = @(
@{
NodeName = "*Web*" # < problem lies here
# can be prodWeb## or devWeb##
Role = "IIS", "basic"
}
@{
NodeName = "*"
Role = "basic"
}
)
}
DSC资源:
Configuration CFG
{
$AllNodes.where{ $_.Role.Contains("Basic") }.NodeName
{
...
}
$AllNodes.where{ $_.Role.Contains("IIS") }.NodeName
{
...
}
}
我可以实现吗?
答案 0 :(得分:1)
配置数据中的AllNodes条目是一个哈希表数组。每个哈希表都需要一个密钥NodeName。当表达式求值时,该值将被替换。所以像web *这样的节点名称将不起作用
答案 1 :(得分:0)
所以,基本上我所做的就是:
Configuration Windows
{
node $allnodes.NodeName {
switch ($Node.Role) {
"Role1" {
...
}
"Role2" {
...
}
"Role3" {
...
}
}
}
}
我的配置数据:
@{ AllNodes = @( @{ NodeName = "web"; Role = "Role1", "Role2" } ) }
另一组节点:
@{ AllNodes = @( @{ NodeName = "other"; Role = "Role1", "Role3" } ) }
我正在使用Azure自动化为节点分配配置,因此它不检查节点名称,它只应用配置在编译时具有的任何角色。