我有一个正在运行的清单,其中我根据一个设置(Exerpt)创建了一个文件夹和一个文件:
define ffnord::mesh(
$mesh_if_id = "low",
$mesh_mtu_low = 1280,
$fastd_low_port = 11280, # fastd port
) {
ffnord::fastd { "fastd_${mesh_code}":
mesh_if_id => $mesh_if_id,
mesh_mtu_low => $mesh_mtu_low,
fastd_low_port => $fastd_low_port,
}
}和
define ffnord::fastd( $mesh_if_id
, $mesh_code
, $mesh_mtu_low = 1280
, $fastd_low_port
) {
file {
"/etc/fastd/${mesh_code}-mesh-low-vpn/":
ensure =>directory,
require => Package[ffnord::resources::fastd];
"/etc/fastd/${mesh_code}-mesh-low-vpn/fastd.conf":
ensure => file,
notify => Service[ffnord::resources::fastd],
content => template('ffnord/etc/fastd/fastd-low.conf.erb');
}
}如何定义这些配置的可变数量:
$mesh_if_id = "low",
$mesh_mtu_low = 1280,
$fastd_low_port = 11280, # fastd port
$mesh_if_id = "something",
$mesh_mtu_low = 12345,
$fastd_low_port = 112345, # fastd port
...并循环遍历这些块,以便在ffnord/etc/fastd/中为每个块自动创建文件夹和文件?
(我想解决这个问题:https://github.com/ffnord/ffnord-puppet-gateway/pull/116#issuecomment-100619610 )
发布于 2015-05-11 15:48:42
在Puppet 3.x中没有“循环”,但有一些技巧。您可以传递一个表示N个ffnord::fastd实例的Hash of data:
define define ffnord::mesh($fastd_hash) {
create_resources('ffnord::fastd', $fastd_hash)
}
define ffnord::fastd($mesh_code, $fastd_low_port, $mesh_mtu_low = 1280) {
file {
"/etc/fastd/${mesh_code}-mesh-low-vpn/":
ensure =>directory,
require => Package[ffnord::resources::fastd];
"/etc/fastd/${mesh_code}-mesh-low-vpn/fastd.conf":
ensure => file,
notify => Service[ffnord::resources::fastd],
content => template('ffnord/etc/fastd/fastd-low.conf.erb');
}
}
$hash_of_fastds = {
"low_id" => {
mesh_code => 'low,
mesh_mtu_low => 1280,
fastd_low_port => 11280,
},
"some_id" => {
mesh_code => 'something',
mesh_mtu_low => 12345,
fastd_low_port => 112345,
},
}
ffnord::mesh { 'foo': fastd_hash => $hash_of_fastds, }注意,我稍微修改了定义::fastd,这里有一个$mesh_if_id参数,我已经把它变成了ffnord::fastd的$namevar。
第一级$hash_of_fastds转换为ffnord::fastd实例的名称,第二级散列是每个ffnord::fastd的参数。
有关详细信息,请参阅documentation on the create_resources function。
在Puppet 4中,您可以使用each函数来实现类似的结果。
https://stackoverflow.com/questions/30157708
复制相似问题