7

Vagrant に CentOS ベース ボックスがあり、パペット マニフェストを作成しています。これまでのマニフェストの内容は次のとおりです。

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、sudocmdyum updateが 1 で終了したというエラーが表示されます。Web で調べましたが、これに対する解決策はまだ見つかりません。何か助けはありますか?

========編集========= 私は答えを読み、同意します - みんなありがとう。私はこれを開発ボックスで使用しているだけで、作業を開始する前に最新の状態にする必要がありました。

4

3 に答える 3

11

puppetでは、コマンドを直接sudo実行するだけで、を使用する必要はありません。yum通常、コマンドはデフォルトでrootとして実行されますが、どのユーザーを指定することもできます。

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

execただし、パペットには無条件で使用しないことを強くお勧めします。これは、パペットが実行されるたびに実行されます。フォレストがすでに言ったように、それは人形が設計されているものではありません。私はパペットをに使用しませんyum update、そして私execのsは常に、、、createsまたはそれらが必要なときにだけ実行されることを保証するためにonlyif持っています。refreshonlyunless

于 2012-12-31T05:49:04.360 に答える
3

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

于 2012-12-30T22:39:24.543 に答える