2012-12-30 63 views
6

我在流浪漢中有一個CentOS基礎盒子,我用木偶清單站立起來。下面是在清單什麼是迄今:木偶清單 - 'sudo'命令?

class base { 
    exec { "sudocmd": 
     path => ["/usr/bin/","/usr/sbin/","/bin"], 
     command => "sudo yum update -y", 
    } 

    package { "man": 
     ensure => present, 
    } 

    package { "bind": 
     ensure => present, 
    } 

    package { "bind-utils": 
     ensure => present, 
    } 
} 

include base 

但是,當我說vagrant up,我得到sudocmd yum update退出了1我看了網絡上的錯誤,但我還沒有找到一個解決方案這還沒有。任何幫助?

========編輯========= 我閱讀答案,我同意 - 謝謝你們。我只是在開發箱上使用它來解決這個問題,我需要在開始工作之前對其進行更新。

回答

3

所以Puppet並不是真的要執行像yum更新這樣的任務。這是一種配置管理工具,並不完全取代這類任務。此外,你遇到了很多問題。如果Puppet被守護進程怎麼辦?這會對我們的生產環境產生負面影響嗎?如果用戶意外地運行Puppet並且它會更新打破我們的腳本的包(JDK,MySQL,PHP等),會發生什麼情況。據我所知,沒有解決方案,因爲它不是真的被認爲是一個問題。 Scott包裝上的Serverfault爲類似問題提供了一個非常具有描述性的答案。

11

使用木偶,您不需要使用sudo,只需直接運行yum命令。通常,命令將默認以root身份運行,但您可以指定用戶。

exec { "sudocmd": 
    path => ["/usr/bin/","/usr/sbin/","/bin"], 
    command => "yum update -y", 
    user => root, 
} 

不過,我強烈建議您不要使用任何類型的非條件exec傀儡。每次傀儡運行時都會運行。由於Forrest already said,這不是什麼木偶設計的。我不會使用木偶作爲yum update,而我的exec總是有creates,onlyif,refreshonlyunless以確保它們只在需要時運行。