2013-05-11 63 views
0

我是新来的木偶,我很难过。木偶 - 包名变量失败

我正在安装gcc,gcc-C++,openssl和openssl-devel。

在显示的代码中,$ openssl_devel工作正常,但$ c_plus未定义。

为什么傀儡将$ c_plus设置为'undef'?

美分OS 6

class torque::prerequisites { 
case $operatingsystem { 
     centos,redhat: {$openssl_devel = 'openssl-devel'} 
     centos,redhat: {$c_plus   = 'gcc-c++'} 

     debian,ubuntu: {$openssl_devel = 'libssl-dev'} 
     debian,ubuntu: {$c_plus   = 'build-essential'} 

     default:{fail("Unable identify opperating system. $operatingsytem not recognized") } 
    } 

    package {'openssl': 
     ensure => latest, 
    } 
    package {$openssl_devel: 
     ensure => latest, 
     require => Package['openssl'], 
    } 
    package {'gcc': 
     ensure => installed, 
    } 
    package {$c_plus: 
     ensure => installed, 
     require => Package['gcc'], 
    } 
} 

class {'torque::prerequisites':} 

木偶申请torque_prerequisites

ERR:/阶段[主要] /转矩::先决条件/封装[是undef] /确保:从缺席变化呈现失败:无法发现包民主基金

+0

每种操作系统都有两种情况。它将找到第一个,执行它,然后停止。你应该把'$ openssl_devel'和'$ c_plus'声明放在同一组花括号中。就像你在下面的回答中所做的一样。 – 2015-06-08 20:07:28

回答

0

我仍然不知道原因,原来的语法没有工作,但这个语法确实作品:

class torque::prerequisites { 
case $::osfamily { 
    Redhat: { 
     $openssl_devel = 'openssl-devel' 
     $c_plus_compiler = 'gcc-c++' 
    } 
    Debian: { 
     $openssl_devel = 'libssl-dev' 
     $c_plus_compiler = 'build-essential' 
    } 

    default:{fail("Unable identify opperating system. $operatingsytem not recognized") } 
} 

package {'openssl': 
    ensure => latest, 
} 
package {$openssl_devel: 
    ensure => latest, 
    require => Package['openssl'], 
} 
package {'gcc': 
    ensure => installed, 
} 
package {$c_plus_compiler: 
    ensure => installed, 
    require => Package['gcc'], 
} 
} 

class {'torque::prerequisites':}