2012-10-17 67 views
2

有人能向我解釋爲什麼將這項工作:木偶包括和可變範圍

node 'puppetagent'{ 
    $my_role="proxmoxnode" 
    include role_proxmoxnode 
} 

class role_proxmoxnode { 
    include sshdconf 
} 

,這將不會:

node 'puppetagent'{ 
    include role_proxmoxnode 
} 

class role_proxmoxnode { 
    $my_role="proxmoxnode" 
    include sshdconf 
} 

通過「工作」我的意思是sshd_config.erb文件按照預期,由sshdconf模塊設置將會找到$ my_role =「proxmoxnode」。通過「不會工作」,我的意思是模板抱怨「找不到'my_role的價值'」 我使用puppet 3.0。

我跟着http://projects.puppetlabs.com/projects/1/wiki/Infrastructure_Design_Guidelines關於角色的文檔。

謝謝

回答

2

在Puppet 3.0中。不合格的變量中查找在4個地方:

  1. 本地範圍
  2. 從基類繼承
  3. 節點級
  4. 頂部範圍

本地範圍,順便說一句,將適用於定義爲這個類的變量,而不是僅僅包含它的類。

所以,在你的第一個例子,我們去尋找:

  1. 它是本地?
  2. 它在基類嗎?
  3. 它在節點中嗎?是。我們停下來。

在第二個例子......

  1. 它是本地?
  2. 它在基類嗎?
  3. 它在節點中嗎?
  4. 它在頂部範圍內嗎?號碼失敗。

清除?

+0

是的,也很清楚,我沒有使用一個好的設計來滿足我想要的。我切換到一個參數化的類,等待$角色,它可以根據需要工作。謝謝 – skizo