Ваш код работает нормально, и я подозреваю, что вы просто неправильно понимаете, как Puppet управляет вкладками cron.
Если вы используете последнюю версию Puppet, исходный код логики cron будет здесь ,Обратите внимание на фактические файлы, используемые ОС типа здесь :
CRONTAB_DIR = case Facter.value('osfamily')
when 'Debian', 'HP-UX', 'Solaris'
'/var/spool/cron/crontabs'
when %r{BSD}
'/var/cron/tabs'
when 'Darwin'
'/usr/lib/cron/tabs/'
else
'/var/spool/cron'
end
Итак, приведенный код выглядит так:
file { 'mycommand':
path => "/usr/bin/mycommand",
content => "#!/usr/bin/bash\necho hello world",
}
cron { 'puppet-apply':
ensure => present,
command => "/usr/bin/mycommand",
user => root,
hour => '14',
minute => '49',
require => File['mycommand'],
}
Если вы примените его как root в CentOS 7:
[root@centos-72-x64 ~]# puppet apply /tmp/apply_manifest.pp
Notice: Compiled catalog for centos-72-x64.macquarie.local in environment production in 0.05 seconds
Notice: /Stage[main]/Main/File[mycommand]/ensure: defined content as '{md5}8d9f82443e4fb78b8316c17174182d16'
Notice: /Stage[main]/Main/Cron[puppet-apply]/ensure: created
Notice: Applied catalog in 0.04 seconds
У вас будет ожидаемый crontab:
[root@centos-72-x64 ~]# crontab -l
# HEADER: This file was autogenerated at 2019-11-09 03:55:09 +0000 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: puppet-apply
49 14 * * * /usr/bin/mycommand
А реальные измененные файлы находятся в /var/spool/cron
:
[root@centos-72-x64 ~]# find /var/spool/cron
/var/spool/cron
/var/spool/cron/root
[root@centos-72-x64 ~]# cat /var/spool/cron/root
# HEADER: This file was autogenerated at 2019-11-09 03:55:09 +0000 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: puppet-apply
49 14 * * * /usr/bin/mycommand