Исходя из опыта разработки, я привык к автоматическому (модульному) тестированию до того, как все будет запущено. Теперь я хотел бы использовать тот же подход к (новым) серверам Linux (и некоторым Windows) и сетевым устройствам.
Я хочу иметь возможность определять тесты / условия, которые эти системы должны пройти, прежде чем они смогут работать, или запускать тесты на живых хостах, чтобы проверить, соответствуют ли они нашим стандартам.
Тесты, которые я хочу провести, выходят за рамки сканирования сети. Например:
Знаете ли вы, существует ли такая автоматизированная система, которая лучше всего соответствует моим требованиям? Или я должен использовать существующий фреймворк unittest?
Это то, для чего вы используете мониторинг. Существует множество систем мониторинга с разными достоинствами и недостатками, и здесь не место для исчерпывающего обсуждения различных вариантов. Ваш мониторинг должен, в принципе, отражать все утверждения, которые вы делаете о своей системе, как с точки зрения результатов, так и времени отклика. Я поощряю использование в моей команде «системного администрирования с упором на мониторинг», и параллели с разработкой должны быть очевидны.
Теперь, так же, как некоторые вещи трудно поддаются модульному тестированию, есть также некоторые вещи, которые трудно контролировать. Ваш пример SSH - один из них - хотя вы, безусловно, можете попытаться войти в систему, и если это не удастся, тогда скажите, что вы закончили, но многие вещи могут запутать ваш тест - «попытка войти в систему как root с паролем не удалась» может быть облажался, если кто-то изменит пароль root на test123
и включение аутентификации по паролю - вы не знаете, какой пароль был установлен, поэтому, конечно, ваш тестовый вход не удастся.
Для те вещи, вам нужна система управления конфигурацией, например Chef или Puppet. Эти системы позволяют вам эффективно делать утверждения о состоянии системы (например, « PasswordAuthentication
вариант в /etc/ssh/sshd_config
должен быть установлен на false
"), и система управления конфигурациями будет обеспечивать это каждый раз при запуске. Хорошие системы также могут предоставить вам отчеты об исключениях (" эй, я подумал, что вам может быть интересно узнать, что PasswordAuthentication
был установлен на true
; все нормально, я исправил, но ты можешь пойти сломать кому-нибудь пальцы "), чтобы знать, когда что-то странное делает случиться.
Вы могли бы использовать Serverspec. В основном это полезно для тестов, которые выполняются на целевом хосте, например. проверка наличия / содержимого файлов, установленных пакетов, используемых портов сервера.