web-dev-qa-db-ja.com

Puppet 2.7 puppet:/// fileがマスターで更新されたときに、クライアントでファイルが更新されることを確認します

すべてのPuppetLinuxクライアントにプッシュしたPerlスクリプトがあります。その後、Puppetマスターでスクリプトmodule/modulename/files/scripts/a_scriptスクリプトを編集しましたが、クライアントはファイルを持っているため、変更を取得できません。どうやらそれはチェックサムやmodtimeを使用していません。ファイルがマスターバージョンで最新であることを確認するためのベストプラクティスは何ですか?チェックサムロジックを作成する必要がありますか、それともすでに組み込みの機能がありますか?

最初にプッシュするために使用したコードは次のとおりです。

file { '/sbin/a_script':
    ensure => present,
    mode => 744,
    owner => root,
    source => "puppet:///modulename/scripts/a_script"
}

明らかに、ファイルを削除してプルバックさせるのはハッキーな解決策です。もっと雄弁なものを望んでいます。

[〜#〜] update [〜#〜] Puppetは、次回の実行時にpuppet:/// filebucket内のファイルのチェックサムと同期を行います。エラーが発生したため、ファイル宣言が次のようになりませんでした。実行します。宣言をsite.ppに移動すると、クライアント上の既存のファイルへの変更が同期されました。

1
usedTobeaMember

フラットなディレクトリ構造からスクリプトを提供することをお勧めします。 puppet:///modulename/a_scriptの代わりにpuppet:///modulename/scripts/a_script

しかし、それがオプションでない場合、これは recurseディレクティブ のユースケースのように聞こえます。これがないと、デフォルトのアクションは、コンテンツに関係なく、ファイルが存在することを保証するだけのようです。

Puppet File Type Reference もチェックしてください。

-編集-

スクリプトのディレクトリを同期しようとしていると思いました。

あなたの場合、ソースチェックサムが変更された場合、Puppetはデフォルトで ファイルタイプではreplace => true になります。

クライアントシステムのpuppet agent -t(またはpuppet agent --debug -t)からの出力は何ですか?

0
ewwhite