エージェントにスクリプトをデプロイし、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.sh
files
いいえURIの一部ですsource
。
別のエラーがあります。File
AFAIK参照が必要です。名前~のファイルリソースつまり、リテラルでなければなりませんrequire => File['script file'],
。
あなたのcron
リソースcommand
また、実行する実際のコマンドである指定された属性もありません。
その他のヒント:
file
path
リソース(およびリソースへの参照)を単純化するためにタイトル(代わりに)として使用しますscript file
。これには、属性を指定する必要さえないという追加の利点がありますpath
。タイトルはデフォルトです。- 変数の使用何もない
file
リソースのタイトルなど、複数回参照します。 - 使用人形リントよくある質問(FAQ)をご覧ください。