无法通过清单在 cron 中运行脚本

无法通过清单在 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.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'],
    }
    }

答案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资源的标题。
  • 使用木偶皮棉发现一些常见问题。

相关内容