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