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