Я постоянно развертываю серверы Linux и хочу тестировать каждую установку. Как системный тест.
Для приложений существует множество тестовых фреймворков, но я не могу найти ничего для тестирования установки сервера.
Чтобы быть более конкретным: с помощью Puppet я развертываю различные комбинации Ubuntu, такие как LAMP, LNMP, Solr, Elasticsearch, Nodejs и т. Д. На более позднем этапе кто-то еще добавляет приложение к этим установкам. Чтобы обеспечить максимальное качество, я теперь запускаю Jenkins с матрицей, которая тестирует каждую возможную комбинацию манифестов Puppet, которые я использую. Это гарантирует, что Puppet не выйдет из строя во время развертывания.
Проблема в том, что даже если Puppet завершится успешно, нет гарантии, что, например, ElasicSearch действительно работает, или что iptables блокирует правильные порты и так далее. Конечно, я мог бы написать кучу сценариев bash для тестирования, но это неправильный путь.
Вопрос в том, существует ли уже структура для этого (но я ее пропустил)? Или есть другие хорошие предложения, как действовать здесь? Цель состоит в том, чтобы иметь возможность тестировать запущенные процессы, подключаться к портам и т. Д.
Спасибо,
Я нашел совпадение префекта (по крайней мере, для меня).
Сейчас использую ServerSpec. Вы запускаете его локально или удаленно на целевой тестовой машине, и тестовые примеры выглядят примерно так:
describe port(80) do
it { should be_listening }
end
Описано множество тестовых ресурсов Вот. Вы можете проверить существующих пользователей, файлы, записи crontab, правила iptables и многое другое.
Вы ищете то, что называется мониторингом. Вы просто настраиваете несколько тестов, и программное обеспечение для мониторинга запускает их и сообщает о результатах. Такого программного обеспечения много, например, zabbix или nagios.