Как я могу пропустить неудачную работу Rundeck? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть задание Rundeck для обновления серверов с помощью пользовательского сценария, который запускается как локальная команда. Если обновление сервера нужно отложить из-за запуска на нем заданий, пользовательская локальная команда вернет специальный код возврата. Задание Rundeck настроено на сбой шага без выполнения каких-либо оставшихся узлов в случае сбоя узла.

Я хочу пропустить узел и перейти к следующему узлу, если этот узел возвращает специальный код возврата.

Я попытался поэкспериментировать с обработчиком ошибок, используя такой код:

/bin/sh -c 'if test "${result.resultCode}" = "125"; then exit 0; fi; exit "${result.resultCode}"'

Урезанная конфигурация задания выглядит так:

- defaultTab: summary
  executionEnabled: true
  loglevel: INFO
  multipleExecutions: true
  name: Server update
  nodeFilterEditable: true
  nodefilters:
    dispatch:
      excludePrecedence: true
      keepgoing: false
      successOnEmptyNodeFilter: false
      threadcount: ${option.parallelity}
    filter: ''
  nodesSelectedByDefault: true
  notification:
    onfailure:
      email:
        recipients: me@example.com
        subject: 'rundeck: server update failed'
    onsuccess:
      email:
        recipients: me@example.com
        subject: 'rundeck: server update finished'
  notifyAvgDurationThreshold: null
  options:
  - description: Maximum number of server updates in parallel.
    name: parallelity
    regex: ^[0-9]+$
    required: true
    value: '1'
  scheduleEnabled: true
  sequence:
    commands:
    - configuration:
        command: /usr/bin/custom-server-update "${node.name}"
      nodeStep: true
      type: localexec
    keepgoing: false
    strategy: parallel

1 Ответ

0 голосов
/ 10 июля 2019

В момент создания или редактирования вашего задания прокрутите вниз и установите следующее: Если узел выходит из строя -> Продолжите работу на всех оставшихся узлах, прежде чем выполнить шаг.

...