У меня есть задание 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