2017-12-16 17 views
0

毎時ノードに人形サーバーをチェックインさせています。人形マニフェストの実行セクションを1日1回、時間単位のポーリング

我々は、チェックイン時にだけ一日一回実行するいくつかのタスクを持っています。

最後の実行時間を節約し、最後の時間が24時間を超えていた場合にのみ実行される人形マニフェスト内で機能させることができるでしょうか?

更新:

私は1つの事セミ作品を試してみました。これは、人形コードのチャンクを別のファイルに移動して、私の主な人形がそれにcronジョブが存在するようにします。

私はこれで別の部署から戻って苦情は、彼らはもはや人形ボード上のエラーをインストール見ることができないということです。メインスクリプトは、単にことを保証として、私たちはもはやPuppetboard上の障害からのフィードバックを得なかっcron実行puppet apply myFile.ppを有する

enter image description here

:この画像は、新しいブランチ上の2つの古い人形のブランチ上のノードと1を示していますcron job exists:

答えて

3

少なくとも2つのオプションがあります。

ご指定されていないタスクがexecリソースによって処理されると仮定すると、あなたは人形だけ今までに一日一回の同期のうちとしてのexecに関しては、このような方法でこれを設計することができます。それはあなたのエグゼクティブにカレンダーの日をファイルに書き込ませることで実現できます。

unless => "test $(</var/tmp/last_run) == $(date +%d)" 

明らかにあなたの幹部も、そのファイルの更新を追跡する必要があるでしょう:次に、あなたはunless属性を追加することができます。

schedule { 'everyday': 
    period => daily, 
    range => '1:00 - 1:59', 
} 

exec { 'do your thing': 
    schedule => 'everyday', 
} 

人形は本当に時間ごとに一度だけ実行されることを前提としています

2番目のオプションは、スケジュールのメタパラメータを使用することです。当然のことながら、人形劇はその時間に2回以上実行されます。システム管理者が手動で実行することがあります。

+0

おかげで、スクリプトがエラーを返した場合、人形シス​​テムに関するフィードバックを得ることができますか?私は似たようなもので私の質問を更新し、私は別の部門から戻ってきた苦情を更新しました。 –

+1

「スケジュール」では、 '' repeat => 1''(https://puppet.com/docs/puppet/5.3/types/schedule.html#schedule-attribute-repeat)を '範囲 '。または、「範囲」に加えて。 –

関連する問題