Ah I see a new thread, "Assign variable with content of a file?" that lines
up with my needs, I'll check out the suggestions there.

Pete

On Sat, May 2, 2009 at 7:22 AM, Pete Emerson <[email protected]> wrote:

> Oh, that makes sense. The require only sets the dependency of cron on exec,
> not based on whether the command inside the exec actually happened.
>
> So, is there a way to do what I want to do, which is install the cronjob if
> and only if /etc/crontab.txt contains the word "crontab"?
>
> Some context here might be useful ... my text file that I'm checking is
> actually an application configuration file, and in some cases the
> application and configuration that gets pushed out needs a cron job, and in
> others, not.
>
> I suppose I could have the cronjob itself check for the contents:
>
> command => "if grep -q crontab /etc/crontab.txt; then date >>
> /tmp/date.log; fi"
>
> but it would be nicer if the cronjob just didn't exist at all.
>
> Pete
>
>
> On Fri, May 1, 2009 at 1:23 PM, John Florian <[email protected]>wrote:
>
>>
>> Pete,
>>
>> The only thing affected by onlyif here is the /bin/echo command
>> itself.  You can even see this in your logged output.
>>
>> On May 1, 1:56 pm, Pete Emerson <[email protected]> wrote:
>> > I'm trying to get a cron entry to exist based on the contents of a file.
>> >
>> > I tried this:
>> >
>> >     exec { "check-cron":
>> >         command => "/bin/echo",
>> >         logoutput => true,
>> >         onlyif => "/bin/grep 'crontab' /etc/crontab.txt"
>> >     }
>> >     cron { exec-date:
>> >         require => Exec["check-cron"],
>> >         ensure => "present",
>> >         command => "date >> /tmp/date.log",
>> >         user => "root",
>> >         minute => "*/10"
>> >     }
>> >
>> > My grep returns a value of 2 because /etc/crontab.txt does not exist:
>> > # /bin/grep 'crontab' /etc/crontab.txt
>> > grep: /etc/crontab.txt: No such file or directory
>> > # echo $?
>> > 2
>> >
>> > and yet puppet wants to install the crontab:
>> > # /usr/sbin/puppetd --test --noop
>> > info: Caching catalog at /var/lib/puppet/localconfig.yaml
>> > notice: Starting catalog run
>> > notice: //Cron[exec-date]/ensure: is absent, should be present (noop)
>> > notice: Finished catalog run in 4.22 seconds
>> >
>> > Once I put the text in /etc/crontab.txt, the logic gets reversed:
>> >
>> > # echo crontab >> /etc/crontab.txt
>> > # /usr/sbin/puppetd  --test --noop
>> > info: Caching catalog at /var/lib/puppet/localconfig.yaml
>> > notice: Starting catalog run
>> > notice: //Exec[check-cron]/returns: is notrun, should be 0 (noop)
>> > notice: //Cron[exec-date]/ensure: is absent, should be present (noop)
>> > notice: Finished catalog run in 4.27 seconds
>> >
>> > According to the documentation on onlyif:
>> >
>> > If this parameter is set, then this exec will only run if the command
>> > returns 0.
>> >
>> > I'm stumped. And I may not be approaching this in the right way. Any
>> > pointers would be appreciated. Also, the logic here (if I had it
>> working)
>> > would not permit *removal* of the cron job if it exists. I could put two
>> > logically opposite entries in there to do that, but now it just seems
>> pretty
>> > ugly, so I suspect I'm missing the elegant solution.
>> >
>> > Pete
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to