Spec-Zone.ru › Chef 16

Chef InSpec и Друзья

[редактировать на GitHub]

Эта страница рассматривает проекты, похожие на Chef InSpec, чтобы объяснить, как они связаны друг с другом.

RSpec

RSpec — это замечательный фреймворк, широко используемый разработчиками программного обеспечения для тестирования кода Ruby. Он поддерживает разработку, ориентированную на тестирование (TDD), и помогает разработчикам писать лучший код каждый день.

Chef InSpec построен на базе RSpec и использует его в качестве базового фреймворка для выполнения тестов. Он использует ключевые сильные стороны RSpec, такие как простота выполнения тестов и DSL для написания тестов, но расширяет функциональность для использования в качестве аудита соответствия. Chef InSpec поставляется с набором специальных ресурсов аудита, которые облегчают написание проверок аудита и позволяют выполнять эти проверки на удаленных серверах. Эти ресурсы аудита учитывают различия между операционными системами и помогают абстрагироваться от локальной операционной системы, аналогично другим ресурсам, которые можно использовать в ваших рецептах Chef.

Полное правило Chef InSpec выглядит так:

control "sshd-11" do
  impact 1.0
  title "Server: Set protocol version to SSHv2"
  desc "Set the SSH protocol version to 2. Don't use legacy
        insecure SSHv1 connections anymore."
  tag security: "level-1"
  tag "openssh-server"
  ref "Server Security Guide v.1.0", url: "http://..."

  describe sshd_config do
    its('Protocol') { should eq('2') }
  end
end

Тем не менее, Chef InSpec — это не RSpec. Вот некоторые ключевые различия:

  • В InSpec блоки describe не должны быть вложенными; вместо этого используйте блоки control, чтобы описать группирование тестов на более высоком уровне.
  • Конструкции RSpec shared_example не поддерживаются. Вместо этого создайте простой пользовательский ресурс, который выполняет повторяющиеся задачи.
  • Chef InSpec ориентирован на специалистов по соответствию и тестированию инфраструктуры, поэтому мы сосредоточились на предоставлении нескольких хорошо поддерживаемых и простых в использовании универсальных соответствий, таких как cmp. В отличие от этого, RSpec — это инструмент, предназначенный для разработчиков программного обеспечения. Поэтому он поддерживает очень большой набор соответствий, чтобы обеспечить тестирование конструкций разработки программного обеспечения, таких как исключения, отношения объектно-ориентированного программирования и так далее.
  • Хотя Chef InSpec использует части проекта и кодовой базы RSpec, это отдельный проект от InSpec. График выпусков и набор функций RSpec находятся вне контроля команды Chef InSpec. Хотя возможно использовать многие из основных функций RSpec в профилях Chef InSpec, Chef InSpec гарантирует корректную работу только функций, описанных в документации InSpec. Некоторые основные функции RSpec могут быть удалены в будущих версиях Chef InSpec по мере необходимости для обеспечения стабильности проекта Chef InSpec.

Serverspec

Serverspec — первое расширение RSpec, которое позволило пользователям запускать тесты RSpec на серверах для проверки развернутых артефактов. Оно было создано в марте 2013 года Госуке Мияситой и широко используется. Это также один из основных фреймворков тестирования в test-kitchen и широко используется в экосистеме Chef. Chef InSpec использует опыт разработки и использования Serverspec, чтобы упростить аудит и соответствие.

Опыт, полученный от Serverspec, включает:

  • Специалисты по ИТ, соответствию и безопасности нуждаются в метаданных, помимо того, что предлагает Serverspec, таких как критическая важность, чтобы полностью описать контрольные точки.
  • Настройка и выполнение одних и тех же тестов на нескольких машинах должно быть простым.
  • Должно быть легко находить, отлаживать и расширять код, зависящий от операционной системы.
  • Должно быть легко расширять язык и создавать пользовательские ресурсы.
  • Должно быть возможно запускать несколько тестов одновременно.
  • Поддержка Windows является первоочередным требованием.
  • Требуется интерфейс командной строки (CLI) для более быстрого итеративного кода тестов.

Вы также можете посмотреть этот подкаст, чтобы узнать больше о связи между Chef InSpec и Serverspec.

Чем Chef InSpec отличается от Serverspec

Одно из ключевых отличий заключается в том, что Chef InSpec ориентирован на более широкую аудиторию пользователей. Он оптимизирован для специалистов по DevOps, безопасности и соответствию. Дополнительные метаданные, такие как влияние, заголовок и описание, делают описание контрольных точек более полным, что упрощает совместное использование контрольных точек с другими отделами. Это позволяет отделам безопасности назначать приоритеты правилам. Команды DevOps используют эту информацию, чтобы сосредоточиться на наиболее важных проблемах, требующих устранения.

control "sshd-11" do
  impact 1.0
  title "Server: Set protocol version to SSHv2"
  desc "Set the SSH protocol version to 2. Don't use legacy
        insecure SSHv1 connections anymore."
  tag security: "level-1"
  tag "openssh-server"
  ref "Server Security Guide v.1.0" url: "http://..."

  describe sshd_config do
    its('Protocol') { should cmp 2 }
  end
end

Почему не форкнуть Serverspec?

Chef InSpec начал как расширение Serverspec. По мере роста расширения стало ясно, что требуется новая библиотека. Создание и поддержание форка было непрактично, поэтому появился новый проект.

Будет ли Chef InSpec работать только на машинах, управляемых Chef?

Нет, Chef InSpec можно использовать на любой машине. Неважно, была ли эта машина настроена с помощью Chef или бережно настроена вашим местным системным администратором.

Является ли Chef InSpec заменой Serverspec?

Chef InSpec предназначен для прямого замещения Serverspec. Популярные ресурсы Serverspec были перенесены в InSpec. В некоторых случаях изменилось поведение, как описано в нашем руководстве по миграции.

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/inspec_and_friends/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API