マニフェストを介してcronからスクリプトを実行することはできません。

マニフェストを介してcronからスクリプトを実行することはできません。

エージェントにスクリプトをデプロイし、cronを使用して毎時間実行しようとしています。実行するとpuppet agent -tエラーが発生します。

サーバーエラー400:ノードの/etc/puppet/modules/homebackup/manifests/init.pp:16のcron [homebackup]の無効なパラメータパス

マニフェストで次のパスに書きました。 (Puppet Masterに/etc/puppet/modules/homebackup/manifests/init.ppあります)/etc/puppet/modules/homebackup/script.sh

class homebackup {
file { 'scriptfile':
  ensure => 'file',
  source => 'puppet:///modules/homebackup/script.sh',
  path => '/usr/local/bin/script.sh',
  owner => 'root',
  group => 'root',
  mode => 0755,
}

cron { 'homebackup':
  ensure => 'present',
  command => "/usr/local/bin/script.sh",
  user  => root,
  minute => 0,
  require => File['scriptfile'],
}
}

誰かが私が欠点を見つけるのを助けることができますか?


固定リストです

class homebackup {
    file { 'scriptfile':
      ensure => 'file',
      source => 'puppet:///modules/homebackup/script.sh',
      path => '/usr/local/bin/script.sh',
      owner => 'root',
      group => 'root',
      mode => 0755,
    }

    cron { 'homebackup':
      ensure => 'present',
      command => "/usr/local/bin/script.sh",
      user  => root,
      hour => "23",
      minute => absent,
      require => File['scriptfile'],
    }
    }

答え1

当面の問題は、ファイル()がモジュールの下のディレクトリscript.shにあることです。言い換えれば、混乱するように、パスの一部は次のようになります。files/etc/puppet/modules/homebackup/files/script.shfilesいいえURIの一部ですsource

別のエラーがあります。FileAFAIK参照が必要です。名前~のファイルリソースつまり、リテラルでなければなりませんrequire => File['script file'],

あなたのcronリソースcommandまた、実行する実際のコマンドである指定された属性もありません。

その他のヒント:

  • filepathリソース(およびリソースへの参照)を単純化するためにタイトル(代わりに)として使用しますscript file。これには、属性を指定する必要さえないという追加の利点がありますpathタイトルはデフォルトです
  • 変数の使用何もないfileリソースのタイトルなど、複数回参照します。
  • 使用人形リントよくある質問(FAQ)をご覧ください。

関連情報