Spec-Zone.ru › Chef 16

Ресурс habitat_service

[править на GitHub]

Используйте ресурс проверки 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/

Spec-Zone.ru

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