假设我有一个包含目录名的数组
dirs = ['opt', 'apps', 'apache']
我想迭代并生成以下路径列表
/opt
/opt/apps
/opt/apps/apache
我可以通过它创建文件资源。
答案 0 :(得分:2)
您是否有理由想要遍历这些文件?
因为将这些转换为文件资源的最简单方法是:
$dirs = ['/opt', '/opt/apps', '/opt/apps/apache']
file { $dirs:
ensure => directory,
}
如果您只是想确保创建了所有前面的目录,那么还有dirtree
模块,它将为您完成所有这些:
https://forge.puppet.com/pltraining/dirtree
$apache_dir = dirtree('/opt/apps/apache')
# Will return: ['/opt', '/opt/apps', '/opt/apps/apache']
然后,您可以使用该变量创建目录。
正如Matt所提到的,你也可以使用map或迭代器来创建资源。
这里的基本示例:
$dirs = ['/opt', '/opt/apps', '/opt/apps/apache']
$dirs.each |String $path| {
file {$path:
ensure => directory,
}
}
此处记录:https://docs.puppet.com/puppet/latest/lang_iteration.html
有几种不同的方法可以在代码中执行您想要执行的操作,这取决于您在创建后要对这些资源执行多少管理。