SaltStack: agendar estado superior em lote

4

Gostaria de programar um highstate para ser executado todas as noites, mas não em paralelo. Existe uma maneira de adicionar a opção batch ao sistema de agendamento?

Exemplo:

schedule:
  highstate:
    enabled: True
    function: state.highstate
    maxrunning: 1
    when: 3:00am
    kwargs:
      batch: 1

Idealmente, eu gostaria de também randomizar o tempo quando ele é executado. Eu acho que eu poderia agendar para executar a cada duas horas dentro de um intervalo de tempo de uma hora para que ele seja executado apenas uma vez:

schedule:
  highstate:
    enabled: True
    function: state.highstate
    maxrunning: 1
    range:
      start: 3:00am
      end: 4:00am
    hours: 2
    kwargs:
      batch: 1
    
por HTF 29.12.2015 / 10:52

1 resposta

3

Ao iniciar um estado superior a partir do mestre, você pode utilizar um recurso conhecido como modo em lote.

O --batch-size flag permite que você especifique quantos minions serão executados em paralelo. Você pode usar o comando abaixo:

salt --batch-size 1 '*' state.highstate

Em relação à hora em que é executado, você pode usar o argumento splay da seguinte forma:

splay:
  start: 10
  end: 15

Isso mostrará o tempo entre 10 e 15 segundos

Se você quiser usá-lo com um sistema de agendamento:

Edite /etc/anacrontab e adicione os parâmetros RANDOM DELAY e 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

    
por 04.01.2016 / 11:19

Tags