如何通过puppet中的循环将数组项附加到字符串

时间:2017-01-04 15:59:33

标签: puppet

假设我有一个包含目录名的数组

dirs = ['opt', 'apps', 'apache']

我想迭代并生成以下路径列表

/opt
/opt/apps
/opt/apps/apache

我可以通过它创建文件资源。

1 个答案:

答案 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

有几种不同的方法可以在代码中执行您想要执行的操作,这取决于您在创建后要对这些资源执行多少管理。