在 Puppet 中循环数组
Looping an Array in Puppet
我正在尝试管理位于 100 个不同目录中的 puppet 中的文件。该文件在每个目录中都是相同的。
我有一个目录名称数组,如下所示:
$directories = [ 'dir1' , 'dir2' , 'dir3' , 'dir4' , 'dir5' ]
这里是完整的目录路径:
file { "/var/www/assets/${directories}":
ensure => "directory",
owner => "apache",
group => "apache",
mode => 750,
}
下面是有问题的文件:
file { "/var/www/assets/${directories}/.htaccess":
ensure => present,
owner => "apache",
group => "apache",
mode => 644,
source => "puppet:///modules/apache/.htaccess",
}
现在的问题是当 puppet 运行 它正在查看文件路径而不是遍历数组,而是将目录数组视为单个字符串,如下所示:
"/var/www/assets/dir1dir2dir3dir4dir5/.htaccess"
谁能给我指出正确的方向,这样我就可以遍历每个目录,确保每个目录中都有一个 .htaccess 文件,并且 .htaccess 文件与 .htaccess 文件相同在我的来源中 =>
提前致谢。
如果您是 运行 最近的 Puppet 并且启用了未来的解析器,那么您可以这样做:
each($directories) |$directory| {
file { "/var/www/assets/${directory}/.htaccess":
ensure => 'file',
owner => 'apache',
group => 'apache',
mode => 0644,
source => 'puppet:///modules/apache/.htaccess',
}
}
如果您使用的是较旧的 Puppet,或者不想启用(实验性的)future 解析器,或者只是喜欢以旧方式做事,那么您可以这样做:
$files = regsubst($directories, '.*', '/var/www/assets/[=11=]/.htaccess')
file { $files:
ensure => 'file',
owner => 'apache',
group => 'apache',
mode => 0644,
source => 'puppet:///modules/apache/.htaccess',
}
我正在尝试管理位于 100 个不同目录中的 puppet 中的文件。该文件在每个目录中都是相同的。
我有一个目录名称数组,如下所示:
$directories = [ 'dir1' , 'dir2' , 'dir3' , 'dir4' , 'dir5' ]
这里是完整的目录路径:
file { "/var/www/assets/${directories}":
ensure => "directory",
owner => "apache",
group => "apache",
mode => 750,
}
下面是有问题的文件:
file { "/var/www/assets/${directories}/.htaccess":
ensure => present,
owner => "apache",
group => "apache",
mode => 644,
source => "puppet:///modules/apache/.htaccess",
}
现在的问题是当 puppet 运行 它正在查看文件路径而不是遍历数组,而是将目录数组视为单个字符串,如下所示:
"/var/www/assets/dir1dir2dir3dir4dir5/.htaccess"
谁能给我指出正确的方向,这样我就可以遍历每个目录,确保每个目录中都有一个 .htaccess 文件,并且 .htaccess 文件与 .htaccess 文件相同在我的来源中 =>
提前致谢。
如果您是 运行 最近的 Puppet 并且启用了未来的解析器,那么您可以这样做:
each($directories) |$directory| {
file { "/var/www/assets/${directory}/.htaccess":
ensure => 'file',
owner => 'apache',
group => 'apache',
mode => 0644,
source => 'puppet:///modules/apache/.htaccess',
}
}
如果您使用的是较旧的 Puppet,或者不想启用(实验性的)future 解析器,或者只是喜欢以旧方式做事,那么您可以这样做:
$files = regsubst($directories, '.*', '/var/www/assets/[=11=]/.htaccess')
file { $files:
ensure => 'file',
owner => 'apache',
group => 'apache',
mode => 0644,
source => 'puppet:///modules/apache/.htaccess',
}