5

Amazon Linux 2012.09 で Puppet 3 を使用しています。マニフェストの 1 つがいくつかのディレクトリをセットアップおよび再構成します。タスクの 1 つは、フォルダーの所有者とグループの recursivelt を別のユーザーに変更することです。ただし、これは完了するまでに 60 秒以上かかり、ディレクトリにはほとんど何もありません。端末の chown myuser:myuser /var/lib/jenkins 1 秒もかかりません。

私の質問は: Puppet でディレクトリの所有権を再帰的に変更するためのより良い/より高速な方法はありますか?

ありがとう

 file {'/var/lib/jenkins':
   ensure  => 'directory',
   owner   => myuser,
   group   => myuser,
   recurse => true,
   require => Package['jenkins'],
 }
4

2 に答える 2

4

この遅さも見られます.Puppetが各ファイルを/var/lib/jenkins個別にチェックして、適切な所有者権限があることを確認しているためと思われます$JENKINS_HOME..

トップレベルのディレクトリが目的のユーザーによって所有されていないときはいつでも、代わりに単純なchown -Rコマンド (を使用)を実行することで、Jenkins サーバーでこの問題を回避しました。exec

define modify_owner() {
  exec { "modify_owner_${title}" :
    command => "/bin/chown -R ${user}:${user} '${title}'",
    onlyif => "/usr/bin/stat -c %U '${title}' | grep '^${default_user}$'"
  }
}

modify_owner { ['/var/lib/jenkins', '/var/log/jenkins', '/var/cache/jenkins']: }

$user/は、これらのディレクトリを所有する所有$user者/グループの組み合わせです。これにより、パペットの時間が通常のレベルに戻りました。

:使用stat -c %Uしましたが、OSによっては正確なフォーマットオプションを微調整する必要がある場合があります。このコマンドは所有者のテキスト名を出力し、Linuxで機能しました。)

于 2013-04-17T00:15:26.317 に答える