Linux
無法通過清單在 cron 中執行腳本
我正在嘗試將腳本部署到代理並每小時使用 cron 執行腳本。當我執行
puppet agent -t
時,我收到錯誤:伺服器上的錯誤 400:Cron 上的參數路徑無效
$$ homebackup $$在節點上的 /etc/puppet/modules/homebackup/manifests/init.pp:16
在我在路徑中寫的清單中:(
/etc/puppet/modules/homebackup/manifests/init.pp
位於/etc/puppet/modules/homebackup/script.sh
puppet master 上)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'], } }
直接的問題是您的文件 (
script.sh
) 需要files
位於模組下的目錄中,即/etc/puppet/modules/homebackup/files/script.sh
. 令人困惑的files
是,路徑的一部分不是source
URI的一部分。您還有另一個錯誤:
File
要求AFAIK需要引用文件資源的名稱,也就是說,它應該是字面意思。require => File['script file'],
您的
cron
資源也沒有指定command
屬性,這是要執行的實際命令。其他一些提示:
- 通過使用作為標題(而不是)來簡化
file
資源(以及對它們的引用)。這有一個額外的好處,您甚至不必指定屬性 -它預設為 title。path``script file``path
- 將變數用於您多次引用的任何內容
file
,例如資源的標題。- 使用puppet-lint發現一些常見問題。