将一个数组作为值传递给puppet安装我的包?

我正在通过木偶文件。 其中一个练习是使用一些条件逻辑来编写一个通用的安装清单:

练习:使用$ operatingsystem这个事实来编写一个在基于Debian(“debian”,“ubuntu”)和Enterprise Linux(“centos”,“redhat”)机器上安装构build环境的清单。 (这两种系统都需要gcc软件,但是Debiantypes的系统也需要build-essential。)

我写了代码,但是因为我的机器是一个centos机器,我没有办法检查分支是否工作:

$build_packages = $::operatingsystem ? { /(?i)centos|redhat/ => 'gcc', /(?i)debian|ubuntu/ => ['gcc','build-essential'], default => undef } notify {"build_packages": message => "Build packages for ${::operatingsystem} are: ${build_packages}\n", before => Package['build'] } package {'build': ensure => installed, name => $build_packages } 

我的问题是,如果我在Debian或Ubuntu系统上,这是否工作? 特别是,如果我将$build_packages设置$build_packages一个数组,包资源是否会正确安装这两个包? 还是应该重新定义这样的资源?

 package {$build_packages: ensure => installed } 

第二个, package {$build_packages: 这将被扩展为数组中每个成员的资源,并且数组中的每个包都将被安装。

请注意,该数组将会中断notify资源,因为它的message假定$build_packages是一个string。