Linux

如何將參數傳遞給 puppet 模組?

  • May 27, 2015

配置 puppet 模組的最佳實踐是什麼?我有傀儡2.7.11。我覺得這種方式很亂,看起來像使用全域變數。

node default {
  $always_apt_update = true
  include apt
}

我應該創建從原始配置繼承大部分配置的類嗎?該文件似乎有太多版本,我不確定哪一個適用於我。

更新:

當我嘗試這個時:

 class { 'apt': 
   always_update => 'true',
 } 

我收到一個錯誤:

Error 400 on SERVER: Invalid parameter always_update at /etc/puppet/manifests/nodes.pp:32

您應該使用參數化類而不是全域變數。

例如:

node default {
 class {'apt': 
   always_update =>true 
 }
}
class apt ($always_update = true ) {
 // code 
}

node 'example.com' { 
 class { bar: }
}

有關更多資訊,請參閱 puppet 文件:

這些答案似乎有點過時,使用新版本的 puppet 即 3.7.x,可以使用 Hiera 傳遞類參數。類聲明之類的資源不再被視為最佳實踐。

雖然第二個答案確實使用了 Hiera,但它明確使用了“hiera”功能,這又是一個不太可取的做法。

新的解決方案看起來像這樣:

/etc/puppet/manifests/site.pp:

node default {
   include apt
}

/etc/puppet/modules/apt/manifests/init.pp:

class apt ($always_update = true ) {
 // code 
}

/etc/puppet/hieradata/<filename>.yaml

apt::always_update: true

Hiera 數據 yaml 文件可以根據需要具有不同的參數值。

引用自:https://serverfault.com/questions/485543