highstate
を毎晩実行するようにスケジュールしたいのですが、並行して実行することはできません。スケジューリングシステムにbatch
オプションを追加する方法はありますか?
例:
schedule:
highstate:
enabled: True
function: state.highstate
maxrunning: 1
when: 3:00am
kwargs:
batch: 1
理想的には、実行時間もランダム化したいと思います。 1時間の時間範囲内で2時間ごとに実行するようにスケジュールできるので、1回だけ実行されると思います。
schedule:
highstate:
enabled: True
function: state.highstate
maxrunning: 1
range:
start: 3:00am
end: 4:00am
hours: 2
kwargs:
batch: 1
マスターからハイステートを開始するときは、バッチモードと呼ばれる機能を利用できます。
--batch-size
フラグを使用すると、並行して実行するミニオンの数を指定できます。以下のコマンドを使用できます。
salt --batch-size 1 '*' state.highstate
実行時間に関しては、次のようにsplay
引数を使用できます。
splay:
start: 10
end: 15
これにより、10〜15秒の時間が広がります
スケジューリングシステムで使用する場合:
/etc/anacrontab
を編集し、RANDOM DELAY
およびSTART_HOURS_RANGE
パラメーターを追加します。
# The maximal random delay added to the base delay of the jobs
RANDOM_DELAY=60
# interval, when scheduled jobs can be run, in hours
START_HOURS_RANGE=3-4
1 10 update.daily /usr/bin/salt --batch-size 1 '*' state.highstate