2012-12-30 10 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を言うとき、私はyum updateをsudocmdエラーが、私は、ウェブ上で見てきた1で終了しましたが、私はのための解決策を見つけていない取得これはまだ。どんな助け?

========= 私は答えを読んで、私は同意する - ありがとう。私はちょうど私の周りに混乱のdevのボックスでこれを使用していると私はそれについての作業を開始する前に、それが必要でした。

答えて

3

だから、パペットは実際にyum更新のようなタスクを実行するつもりはありません。これは構成管理ツールであり、この種のタスクを完全に置き換えるものではありません。さらに、これで多くの問題が発生します。人形劇がデーモン化されたら?これが当社の生産環境に悪影響を及ぼしますか?ユーザーが誤ってPuppetを実行し、スクリプト(JDK、MySQL、PHPなど)を破壊するパッケージを更新するとどうなりますか。私が知っている限り、それは本当に問題とはみなされないので、これに対する解決策はありません。 Serverfault上のScott Packは、同様の質問に対する非常に説明的な答えを提供しました。

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,onlyifrefreshonlyまたはunlessです。

関連する問題