Я искал, есть ли какие-нибудь BDD для серверов, что-то похожее в отношении Cucumber или Behat? Что-то, что имеет некоторый синтаксический сахар, например:
Feature: jre
In order to use our monitoring software
As a UNIX user
I need to have JRE version at 8
Scenario:
Given I am in the directory "/usr/local/bin"
And I have a file named "java"
When I run "java -version"
Then I should get:
"""
java version "1.8.*"
"""
Это не совсем обычный текст, как в Cucumber, но serverpec (Ruby, на основе RSpec) и Testinfra (Python) оба предоставляют возможность писать спецификации для ваших машин, чтобы убедиться, что они находятся в желаемом состоянии.
Кстати, тестирование вашей инфраструктуры - это невероятно важно, хотя и не столько «работать на каждой машине», сколько для проверки того, что ваше управление конфигурацией делает то, что вы ожидаете. Регрессии не редкость, и знание того, что изменение в ваших манифестах не помешало правильной настройке машины, очень обнадеживает.
На удивление легко внести изменение, которое останавливает, скажем, установку пакета, о чем вы никогда не узнаете, пока не начнете собирать новую машину, и пакет не появится, даже если он есть на всех других машинах. . Таким образом, интегрируйте свой набор тестов инфраструктуры с вашей системой CI, выполняя как инкрементные, так и чистые (с нуля) сборки при каждой фиксации. Затем проведите тестовым набором над машинами, когда они построены. Это подтвердит, что ваше управление конфигурацией по-прежнему делает все, что должно.
Я автор Testinfra, инструмент для написания тестов инфраструктуры на python (на основе pytest). Все функции testinfra можно использовать вне pytest через API.
Поэтому, если у вас есть некоторые навыки в Python, вы можете подключить testinfra к pytest-bdd или вести себя и создать инфраструктуру, управляемую поведением.
NB: Как новый пользователь, я не могу размещать больше двух ссылок (отличная функция ...)
Марк Берджесс внес большой вклад в исследования в этой области:
http://markburgess.org/sysadmin.html
В частности, взгляните на http://cfengine.com, подкрепленный его работой.