我正在通过木偶文件。 其中一个练习是使用一些条件逻辑来编写一个通用的安装清单:
练习:使用$ 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。