2017-04-18 38 views
0

內聲明我有一個清單日僞它創建了一個類,裏面坐了另一個類:如何添加,如果一個木偶類創建

class profiles::common::wlsdomains { 
    class {"wlsdomain": 
      applications  => hiera('wlsapplications', ""), 
      crontab   => hiera_hash('crontab', ""), 
      generateWlsdomain => hiera('generatewlsdomain'), # This line needs changing 
    } 
} 

到目前爲止好。現在,問題是最後一行。我只想在某些條件下將「generateWlsdomain」設置爲「hiera('generatewlsdomain')」。這是需要一個「if」語句進來,我想更換符合這樣的事情:

if $::generate == "true" { 
    generatewlsdomain => "true" 
} 
elsif $::generate == "false" { 
    # Do nothing; leave generatewlsdomain unset 
} 
else { # If $::generate is neither "true" nor "false", then get a value from Hiera 
    generateWlsdomain => hiera('generatewlsdomain'), 
} 

換句話說,我想主要是看$ ::產生決定該如何做,但如果未設置$ :: generate,則使用Hiera的值作爲備份。

但是,有些東西告訴我,我不能用這個代碼塊替換現有的行,因爲現有的行是逗號分隔的列表的一部分,它不僅僅是它自己的通用代碼行。

萬一它很重要,這是在RedHat機器上運行。

回答

1

如果您不想設置關鍵字undef作爲值,這會使Puppet使用默認值generateWlsdomain

利用這一點,設置的generateWlsdomain值的變量:

if $::generate == "true" { 
    $generatewlsdomain = "true" 
} 
elsif $::generate == "false" { 
    $generatewlsdomain = undef # Do nothing; leave generatewlsdomain unset 
} 
else { # If $::generate is neither "true" nor "false", then get a value from Hiera 
    $generatewlsdomain = hiera('generatewlsdomain') 
} 

或位更緊湊,採用a selector測試$::generate值並設置$generatewlsdomain其結果:

$generatewlsdomain = $::generate ? { 
    "true" => "true", 
    "false" => undef, # Do nothing; leave generatewlsdomain unset 
    default => hiera('generatewlsdomain'), # If neither "true" nor "false", then get a value from Hiera 
} 

和將其傳遞到現有類別聲明中:

class {"wlsdomain": 
    applications  => hiera('wlsapplications', ""), 
    crontab   => hiera_hash('crontab', ""), 
    generateWlsdomain => $generatewlsdomain, 
} 
+0

這看起來很有趣,謝謝!現在嘗試... – Enfors

+0

它確實工作,謝謝! – Enfors