2016-04-12 4 views
0

Das ist schwer zu erklären, aber für mich.

Ich möchte eine Auszeit setzen für Marionette für einen Cron-Job.

define cron::job (
    $url, 
    $time_offset, 
    $ensure = 'present', 
    $minute = 5 + $time_offset, 

) 

Dann in meinem eigentlichen Job möchte ich */sowie die Minutenvariable verwenden. Ist das möglich? Da meine derzeitige Implementierung fehlschlägt, kann ich nicht die Antwort in den Dokumenten finden, die darauf hindeutet, dass ich den kompletten falschen Weg gehe.

Das ist mein Cron-Job.

cron { "job": 
    command => "wget -O - --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies https://${url}/ >/dev/null 2>/dev/null", 
    user => 'housekeeper', 
    minute => '*/$minute', 
    ensure => $ensure, 
    } 

Ich würde mich über Rückmeldungen/Vorschläge freuen.

Wäre es besser, wenn ich zum Beispiel nur eine bestimmte Minute verwende und nicht alle 5 Minuten?

Der Grund, warum ich das tun möchte, ist, ich möchte die Cron-Jobs gleich lassen und nur einen Offset an die Klasse für jede Website übergeben.

Antwort

2

Dies funktioniert:

define cron::job (
    $url, 
    $time_offset, 
) { 
    $minute = 5 + $time_offset 
    cron { "cron ${name}": 
    ensure => present, 
    command => "wget -O - --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies https://${url}/ >/dev/null 2>/dev/null", 
    user => 'housekeeper', 
    minute => "*/${minute}", 
    require => User['housekeeper'], 
    } 
} 

user { 'housekeeper': 
    ensure => present, 
} 

cron::job { 'job1': 
    url => 'http://example1.com', 
    time_offset => 10, 
} 
cron::job { 'job2': 
    url => 'http://example2.com', 
    time_offset => 15, 
} 

Dann

[[email protected] ~]# puppet apply /tmp/foo.pp 
Notice: Compiled catalog for centos-72-x64 in environment production in 0.21 seconds 
Notice: /Stage[main]/Main/User[housekeeper]/ensure: created 
Notice: /Stage[main]/Main/Cron::Job[job2]/Cron[cron job2]/ensure: created 
Notice: /Stage[main]/Main/Cron::Job[job1]/Cron[cron job1]/ensure: created 
Notice: Finished catalog run in 0.05 seconds 

Und

[[email protected] ~]# cat /var/spool/cron/housekeeper 
# HEADER: This file was autogenerated at 2016-04-12 11:29:15 +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: cron job2 
*/20 * * * * wget -O - --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies https://http://example2.com/ >/dev/null 2>/dev/null 
# Puppet Name: cron job1 
*/15 * * * * wget -O - --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies https://http://example1.com/ >/dev/null 2>/dev/null 
+0

Perfect, es war nur eine Ursache für doppelte Anführungszeichen verwenden. Danke vielmals. –

+0

Froh, das zu hören. –