Ресурс habitat_service
Используйте ресурс проверки habitat_service InSpec для тестирования свойств одного сервиса Habitat.
Доступность
Статус: ЭКСПЕРИМЕНТАЛЬНЫЙ
Этот ресурс, как и все ресурсы пакета inspec-habitat, находится на ранней стадии разработки. Функциональность может быть неполной, содержать ошибки или быть удалена в будущем. Если вы заинтересованы в развитии этого проекта, присоединяйтесь к обсуждению или внесите свой вклад в проект inspec-habitat.
Подключение к Habitat
Для настройки inspec для связи с Chef Habitat, убедитесь, что вы следуете инструкциям по настройке параметров подключения. Это предотвратит ошибки «неподдерживаемая платформа».
Примеры
Проверка сервиса core/httpd
describe habitat_service(origin: 'core', name: 'httpd') do
it { should exist }
its('version') { should eq '2.4.35'}
its('topology') { should eq 'standalone' }
its('update_strategy') { should eq 'none' }
end
Ограничения
Доступ к API и командной строке
Habitat предоставляет определенные данные через командную строку и другие данные через API шлюз HTTP. Для использования всех возможностей этого ресурса используйте набор учетных данных, включающий API. Ограниченный набор данных доступен через командную строку. Подробности см. в документации train-habitat.
Если вы используете интерфейс командной строки без API, недоступные свойства будут вести себя так, как будто ресурс не найден (см. ниже).
Поведение при отсутствии ресурса
Если сервис не найден, этот ресурс ведет себя следующим образом:
-
it { should exist }будет являться проваленным тестом. Проверьте этот тест, если вы не уверены в существовании ресурса; в будущем он гарантированно будет надежным. -
nameиoriginбудут продолжать возвращать свои значения, установленные в параметрах ресурса. Это позволяет сообщению вывода четко ссылаться на отсутствующий сервис. - Все другие свойства с одиночным значением вернут nil.
- Все свойства со значениями массивов и хэшей вернут пустые объекты.
- Все проверяющие выражения вернут false.
Доступность
Установка
Этот ресурс находится в пакете inspec-habitat. Вы можете использовать ресурс, установив зависимость профиля InSpec от пакета ресурсов. Смотрите инструкции inspec-habitat.
Версия
Этот ресурс был впервые доступен в версии 0.1.0 пакета ресурсов.
Параметры ресурса
Используйте параметры ресурса для идентификации конкретного сервиса, который вы хотите протестировать.
origin
Обязательная строка. Название origin (установки дистрибутива) пакета, который предоставляет сервис.
# Most common origin is 'core', publicly distributed packages created by Chef
describe habitat_service(origin: 'core', name: 'httpd') do
it { should exist }
end
# Your company might run a private origin
describe habitat_service(origin: 'mycorp', name: 'secret-sauce') do
it { should exist }
end
name
Обязательная строка. Имя (уникальное внутри пространства имен origin) пакета, который предоставляет сервис.
describe habitat_service(origin: 'core', name: 'httpd') do
it { should exist }
end
Свойства
Используйте свойства для создания тестов, которые сравнивают ожидаемое значение с фактическим.
dependency_names
Массив строк. Список пакетов, от которых зависит этот сервис, в формате dep_origin/dep_name. Это свойство не содержит информации о версии; см. dependency_ids для этого.
Требуется подключение к API; недоступно через командную строку.
describe habitat_service(origin: 'core', name: 'httpd') do
its('dependency_names') { should include 'core/pcre' }
its('dependency_names') { should_not include 'core/nginx' }
end
dependency_ids
Массив строк. Список пакетов, от которых зависит этот сервис, в формате dep_origin/dep_name/1.2.3/20190325123456. Это значение может быть трудно сравнить, так как идентификатор версии (1.2.3, третий компонент) может быть отформатирован любым способом, выбранным разработчиком проекта; они не должны иметь форму 1.2.3.
Требуется подключение к API; недоступно через командную строку.
describe habitat_service(origin: 'core', name: 'httpd') do
# Suppose this version was unwanted, for example
its('dependency_names') { should_not include 'core/pcre/8.42/20190115012526' }
end
name
Название сервиса, переданное через параметр ресурса. Всегда доступно, даже если ресурс не найден. См. также origin и version.
describe habitat_service(origin: 'core', name: 'httpd') do
its('name') { should cmp 'httpd' }
end
origin
Имя origin сервиса, переданное через параметр ресурса. Всегда доступно, даже если ресурс не найден. См. также name и version.
describe habitat_service(origin: 'core', name: 'httpd') do
its('origin') { should cmp 'core' }
end
pkg_id
Строка. Полный идентификатор пакета, поддерживающего сервис, в формате origin/name/version/release. См. также name и version.
describe habitat_service(origin: 'core', name: 'httpd') do
its('pkg_id') { should cmp 'core/httpd/2.4.35/20190307151146' }
end
release
Строка. Номер релиза пакета, поддерживающего сервис, назначенный упаковщиком. Эти значения всегда являются строками, но представляют собой 14-значные временные метки. См. также version.
describe habitat_service(origin: 'core', name: 'httpd') do
its('release') { should be >= '20190307151146' }
end
version
Версия пакета, поддерживающего сервис, назначенная разработчиком проекта пакета. Хотя многие версии имеют формат из 3 цифр, нет заданного правила, и исключения распространены. См. также release.
describe habitat_service(origin: 'core', name: 'httpd') do
its('version') { should be >= '2.2' }
end
Проверяющие выражения
Используйте проверяющие выражения для создания тестов, которые проверяют истинность или ложность вопроса.
InSpec включает ряд универсальных проверяющих выражений. См. ниже проверяющие выражения, специфичные для этого ресурса.
have_standalone_topology
Это проверяющее выражение возвращает true если сервис настроен в топологии standalone.
describe habitat_service(origin: 'core', name: 'httpd') do
it { should have_standalone_topology }
end
have_leader_follower_topology
Это проверяющее выражение возвращает true если сервис настроен в топологии leader-follower.
describe habitat_service(origin: 'core', name: 'httpd') do
it { should have_leader_follower_topology }
end
be_updated_by_none
Это проверяющее выражение возвращает true если стратегия обновления для сервиса — none.
Требуется подключение к API; недоступно через командную строку.
describe habitat_service(origin: 'core', name: 'postgresql') do
it { should be_updated_by_none }
end
be_updated_by_rolling
Это проверяющее выражение возвращает true если стратегия обновления для сервиса — rolling.
Требуется подключение к API; недоступно через командную строку.
describe habitat_service(origin: 'core', name: 'postgresql') do
it { should be_updated_by_rolling }
end
be_updated_at_once
Это проверяющее выражение возвращает true если стратегия обновления для сервиса — at once.
Требуется подключение к API; недоступно через командную строку.
describe habitat_service(origin: 'core', name: 'nginx') do
it { should be_updated_at_once }
end
© 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/resources/habitat_service/