тестирование на солончак: рендерится по очереди - PullRequest
0 голосов
/ 03 июля 2018

Мы тестируем скрипты солончаков на бродячих коробках. Иногда случается, что во время тестирования изменений для хоста A мы непреднамеренно вызываем проблему для хоста B.

Я хотел бы написать скрипт, который будет по крайней мере визуализировать (вызывать show_sls) так, как если бы каждый миньон был поочередно хостом. Это удалит хотя бы один класс ошибок.

Я могу подумать о некоторых хакерских способах сделать это, таких как изменение содержимого / etc / salt / minion_id на каждой итерации. Но есть ли лучшие способы?

Я слишком мало знаю о том, как хорошо тестировать соленые скрипты. Все предложения приветствуются.

Пример псевдокода

Чтобы сделать это несколько яснее, то, что я хотел бы, может выглядеть следующим образом:

my_minions='a.example.com b.example.com c.example.com'
for minion_id in $my_minions; do
    sudo salt-call --local --minion="$minion_id" state.show_sls > /dev/null
    if [ $? != 0 ]; then
        echo "$minion_id does not render"
    fi
done

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать интерфейс для проверки соли , чтобы выполнить пробный пуск на всех миньонах, установив параметр test=True в состояние вместе с - флагом retcode-passthrough , который будет exit with the salt call retcode and not the salt binary retcode, и проверьте код возврата, который возвращается, чтобы проверить, будет ли состояние успешно отображаться, то есть

salt-call state.sls teststate test=True --retcode-passthrough; echo $?

напечатает ненулевой код выхода, если какое-либо состояние окажется неудачным. Чтобы получить список миньонов, вы можете просмотреть /etc/salt/pki/master/minions

(Вы также можете установить test на true по умолчанию в файле конфигурации minion, тогда состояния по умолчанию будут выполняться в тестовом режиме.)

2-й подход может быть установка Failhard global опция в вашем мастере, которая немедленно остановит выполнение всех состояний и выдаст ошибку. Вы можете запустить его так же, как описано выше, в этом случае выполнение прекратится сразу после первого сбоя, и у вас будет свой код возврата.

Возможно, вы захотите взглянуть и на кухонную соль ,

Цель этой кухонной соли - облегчить тестирование солевых состояний. или формулы независимо от производственной среды. Это позволяет делать быстрые проверки состояний и убедиться, что изменения в пакеты не влияют на развертывание. Используя платформы, пользователи могут проводить проверки своих состояний относительно среды, в которой они работают производство, а также проверка будущих выпусков дистрибутивов перед делать серьезные обновления. Также можно протестировать солевые состояния против несколько версий Salt, чтобы убедиться в отсутствии серьезных регрессий.

Я также хотел бы отметить, что у соли еще нет надлежащих кодов выхода, и по этому вопросу еще много вопросов, открытых до сих пор . Если вы хотите проверить вывод вручную, вы можете использовать этот скрипт на питоне , который упоминается в Отслеживать сбой команды на Соли миньоне

...