web-dev-qa-db-ja.com

SaltStack:ハイステートをバッチでスケジュールする

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
4
HTF

マスターからハイステートを開始するときは、バッチモードと呼ばれる機能を利用できます。

--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

3
Alaa Chatti