Назад | Перейти на главную страницу

Поведенческая разработка для серверов?

Я искал, есть ли какие-нибудь 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: Как новый пользователь, я не могу размещать больше двух ссылок (отличная функция ...)

  • API Testinfra: testinfra.readthedocs.org/en/latest/api.html
  • pytest-bdd: github.com/pytest-dev/pytest-bdd
  • вести себя: pythonhosted.org/behave/

Марк Берджесс внес большой вклад в исследования в этой области:

http://markburgess.org/sysadmin.html

В частности, взгляните на http://cfengine.com, подкрепленный его работой.