2011-05-23 59 views
0

與文件工作,我試圖讓下面的代碼運行:不能得到需要的木偶模塊

class common 
{ 
    ... 
    # common packages 
    package 
    { 
     ["lsb-release", "figlet"]: ensure => installed, 
    } 
    # Print some information if someone logs in: 
    file { "/etc/motd": 
     #require => [ Package["figlet"], File["/usr/bin/figlet"] ], 
     require => Package["figlet"], 
     content => generate('/usr/bin/env', '/usr/bin/figlet','-w', '186', '-p', '-f', 'banner', "$hostname"), 
    } 

    .... 
} 

should't這項工作?

我得到以下錯誤:

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to execute generator /usr/bin/env: Execution of '/usr/bin/env /usr/bin/figlet -w 186 -p -f banner hostname' returned 127: /usr/bin/env: /usr/bin/figlet: No such file or directory 
at /etc/puppet/modules/common/manifests/init.pp:37 on node puppetmaster.local 
warning: Not using cache on failed catalog 
err: Could not retrieve catalog; skipping run 

第一我沒有要求(第12行),並沒有包(行5-8)中的代碼,來解決我認爲我可以簡單地添加錯誤第12行(需要包),但它不起作用。所以我添加了包裹,但錯誤不會消失。

如何添加這個依賴?不應該傀儡運行代碼,不要完全跳過運行?

回答

1

generate()在服務器上運行,而不是在客戶端上運行。 (這是一個解析器函數,所以它在服務器上運行)

你寫的這個類將確保客戶端安裝在它們上面的figlet,但是然後嘗試在puppetmaster上運行figlet。只需在puppetmasters上安裝figlet,就不需要包裝資源。

也使用smslant字體,而不是橫幅:)

+0

好的第一回答eric。 – thomasfedb 2011-05-23 12:55:26

+0

大多數木偶問題都在serverfault上,所以我通常在那邊閒逛。 – 2011-05-23 17:34:23