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