2013-05-11 67 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':}