Chef InSpec и Друзья
Эта страница рассматривает проекты, аналогичные 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 Infra или руками вашего местного системного администратора.
Является ли 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/