2017-05-23 97 views
0

我是新來的傀儡,所以任何幫助,將不勝感激。我試圖根據操作系統發行版本將靜態數據傳入Puppet類中的變量apache_version。這個變量稍後會在.erb模板文件中用於根據版本配置apache。現在我的課看起來是這樣的:分配傀儡班內的變數

class some_class_name() { 
    case $::operatingsystem { 
    'RedHat' : { 
     case $::operatingsystemrelease { 
     /^7\..*/ : { } 
     /^6\..*/ : { } 
     } 
    } 
    } 
} 

我如何定義內部{}括號這個變量?至於.erb文件應該像這樣使用:

<%- if @apache_version >= '2.4' -%> 
    set something 
<%- else -%> 
    set something else 
<%- end -%> 

我瞄準的是這樣的:

class some_class_name() { 
    case $::operatingsystem { 
    'RedHat' : { 
     case $::operatingsystemrelease { 
     /^7\..*/ : { $apache_version = '2.4' } 
     /^6\..*/ : { $apache_version = '2.2' } 
     } 
    } 
    } 
} 

,但它不工作。

+1

工作正常,我。 「facter operatingsystem」和「facter operatingsystemrelease」輸出的是什麼?你包括'some_class_name'?你如何檢查'$ apache_version'的值?可能會添加'notify {「Version:$ {apache_version}」:}'。 –

+0

'facter operatingsystem'給'RedHat' 'facter operatingsystemrelease'給出'7.2'(至少在我現在正在工作的系統上) ''some_class_name'正確包含在'init.pp'文件中。 至於檢查 - 我沒有檢查任何地方。我是不是該?它不應該這樣工作,一旦我將版本分配給變量,它應該在'.rb'文件中使用? – NRG

+1

如果'template()'調用位於同一個作用域中,但可以在ERB模板中使用該變量,但所顯示的清單沒有模板()調用,因此很難說這是否正確。 –

回答

1

好的,我設法解決了這個問題。現在我正在使用:

if $::operatingsystemrelease =~ /^7\..*/ { 
    $apache_version = '2.4' 
    } else { 
    $apache_version = '2.2' 
    } 

in params.pp file。有了這一切正在配置正確。

0

這是更好地使用$::operatingsystemmajrelease其實在這裏:

if $::operatingsystemmajrelease == 7 { 
    $apache_version = '2.4' 
    } else { 
    $apache_version = '2.2' 
    } 

我也覺得這是一個很好的用例爲木偶的選擇:

$apache_version = $::operatingsystemmajrelease ? { 7 => '2.4', default => '2.2' }