Cron puppet中出错:文件[…]似乎不在目录中

Cron puppet中出错:文件[…]似乎不在目录中,cron,puppet,manifest,Cron,Puppet,Manifest,我想通过puppet添加连续的cron,第一个设置为每10分钟一个,第二个在周日晚上7:00运行 puppet中的第一个cron工作正常,但第二个cron显示以下错误: 错误:无法从远程服务器检索目录:服务器上的错误400:无效关系:Cron[notifyinactivetargetweekly]{require=>File[…weeklynotifyinactivejob.sh]},因为文件[…weeklynotifyinactivejob.sh]似乎不在目录中 警告:未在失败的目录上使用缓存

我想通过puppet添加连续的cron,第一个设置为每10分钟一个,第二个在周日晚上7:00运行

puppet中的第一个cron工作正常,但第二个cron显示以下错误: 错误:无法从远程服务器检索目录:服务器上的错误400:无效关系:Cron[notifyinactivetargetweekly]{require=>File[…weeklynotifyinactivejob.sh]},因为文件[…weeklynotifyinactivejob.sh]似乎不在目录中 警告:未在失败的目录上使用缓存 错误:无法检索目录;跳绳跑

下面是清单代码

cron { 'firstcron':
    command => "${scmphptpl::DocRootDir}/firstcron.sh ${scmphptpl::Environment} ${scmphptpl::DocRootDir}",
    require => File["${scmdemophp::DocRootDir}/firstcron.sh"],
    minute  => '*/10',
    environment=>["COMPOSER_HOME=${scmphptpl::DocRootDir}",
                    "SYMFONY_ENV=${scmphptpl::Environment}",
                    "SYMFONY_DEBUG=${scmphptpl::Debug}",
                    "PATH=/opt/rh/php55/root/usr/bin:/opt/rh/php55/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin/:/usr/bin/"
                ],

}->
cron { 'weeklynotifyinactivejob':
    command => "${scmphptpl::DocRootDir}/weeklynotifyinactivejob.sh ${scmphptpl::Environment} ${scmphptpl::DocRootDir}",
    require => File["${scmphptpl::DocRootDir}/weeklynotifyinactivejob.sh"],
    minute  => '00',
    hour  => '19',
    weekday  => 'Sunday',
    environment=>["COMPOSER_HOME=${scmphptpl::DocRootDir}",
                    "SYMFONY_ENV=${scmphptpl::Environment}",
                    "SYMFONY_DEBUG=${scmphptpl::Debug}",
                    "PATH=/opt/rh/php55/root/usr/bin:/opt/rh/php55/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin/:/usr/bin/"
                ],

}->
hieradata由以下类别组成:

classes:
  - scmphptpl::myprojectdeploy
myprojectdeploy的init.pp包括:

class scmphptpl {
    $DocRootDir = "/app/code"
我检查了文件/app/code/weeklynotifyinactivejob.sh是否存在

更新:

我已经创建了相同的,但由于某些原因,cron没有按照时间运行:

file { "${DocRootDir}/weeklynotifyinactivejob.sh":
  ensure  => file,
  content => "... whatever's in the file, or use a template/source ...",
}->
cron { 'notifyinactivetargetweekly':
    command => "${scmphptpl::DocRootDir}/weeklynotifyinactivejob.sh ${scmphptpl::Environment} ${scmphptpl::DocRootDir}",
    require => File["${scmdemophp::DocRootDir}/weeklynotifyinactivejob.sh"],
    minute  => '*/15',
    environment=>["COMPOSER_HOME=${scmphptpl::DocRootDir}",
                    "SYMFONY_ENV=${scmphptpl::Environment}",
                    "SYMFONY_DEBUG=${scmphptpl::Debug}",
                    "PATH=/opt/rh/php55/root/usr/bin:/opt/rh/php55/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin/:/usr/bin/"
                ],

}
但15分钟后它不会运行,需要帮助吗

木偶日志说: 文件[/app/code/edlconsole/firstcron.sh]/mode:模式将“0664”更改为“0751” 但它并没有表现出同样的效果 文件[/app/code/edlconsole/weeklynotifyinactivejob.sh]/mode:模式将“0664”更改为“0751” 但频率的变化也反映了这一点 使用require、before、subscribe或notify参数表示资源与文件或其他资源相关,必须包含有效引用

您使用的require参数需要在Puppet清单中定义的特定文件资源,而不一定是服务器本身上的文件。这就是文件不在目录中的意思,目录是根据清单构建的

require => File["${scmdemophp::DocRootDir}/notifyinactivetargetweekly.sh"],
这意味着必须在清单中定义名为/app/code/notifyInactivateTargetWeekly.sh的文件资源,例如,在scmdemophp类中,您可以有:

file { "${DocRootDir}/notifyinactivetargetweekly.sh":
  ensure  => file,
  content => "... whatever's in the file, or use a template/source ...",
}
然后可以解决require依赖关系


如果不希望使用Puppet管理文件,只需将require参数保留在外。

您的代码片段不会显示Puppet报告的文件丢失。你的舱单上有吗?如果是,请将其包括在问题中。如果它在另一个类中,则显示它的布局。hieradata由类组成加载:classes:-scmdemophp::edsConsolleDeploy init.pp由类scmdemophp{$DocRootDir=/app/code/组成,并且我已经验证了文件:/app/code/notifyinactivetargetweekly.sh存在。