Linux

無法通過清單在 cron 中執行腳本

  • June 22, 2015

我正在嘗試將腳本部署到代理並每小時使用 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.shpuppet 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是,路徑的一部分不是sourceURI的一部分。

您還有另一個錯誤:File要求AFAIK需要引用文件資源的名稱,也就是說,它應該是字面意思。require => File['script file'],

您的cron資源也沒有指定command屬性,這是要執行的實際命令。

其他一些提示:

  • 通過使用作為標題(而不是)來簡化file資源(以及對它們的引用)。這有一個額外的好處,您甚至不必指定屬性 -它預設為 titlepath``script file``path
  • 將變數用於您多次引用的任何內容file,例如資源的標題。
  • 使用puppet-lint發現一些常見問題。

引用自:https://unix.stackexchange.com/questions/211187