Spec-Zone.ru › Chef 17

ресурс 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

Имя источника службы, переданное в параметрах ресурса. Всегда доступно, даже если ресурс не был найден. См. также 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