我有几个目录,我想用 puppet 为每个目录设置相同的子目录。
这显然不起作用:
$inst = ['/i1', '/i2', '/i3']
$subdirs = ['subdir1', 'subdir2']
file {"${inst}/${subdirs}":
ensure=>directory,
recurse=>true,
purge=>true,
force=>true,
owner=>$username,
group=>$group,
source=>"puppet:///modules/mymodule/subdirtemplates/${subdirs}/",
mode=>'644';
}
无法将第一个数组的每个成员与第二个数组的每个成员连接起来。
在任何普通编程语言中,您都会使用两个 for 循环,或一些内置映射函数等,但在 puppet 中呢?我必须迁移到新的 Ruby DSL 吗?
答案1
嗯。我是这样解决的:
$inst = ['/i1', '/i2', '/i3']
#$subdirs = ['subdir1', 'subdir2']
file {$inst:
ensure=>directory,
recurse=>true,
purge=>true,
force=>true,
owner=>$username,
group=>$group,
source=>"puppet:///modules/mymodule/subdirtemplates/",
mode=>'644';
}
我确保 subdirtemplates 包含我想要的每个实例中的所有目录。这对我来说是有效的,但也许有人仍然有更好的答案来设置目录树,以防您没有模板树。