ресурс habitat_package
Используйте ресурс аудита InSpec habitat_package для проверки свойств отдельного пакета Habitat.
Доступность
Статус: ЭКСПЕРИМЕНТАЛЬНЫЙ
Этот ресурс, как и все ресурсы пакета inspec-habitat, находится на ранних стадиях исследования и разработки. Функциональность может быть неисправной, неполной или в будущем может быть удалена. Если вы заинтересованы в развитии этого проекта, пожалуйста, присоединяйтесь к обсуждению или внесите свой вклад в проект inspec-habitat.
Подключение к Habitat
Чтобы настроить inspec для связи с Chef Habitat, обязательно следуйте инструкциям по настройке параметров подключения. Это предотвратит ошибки «неподдерживаемая платформа».
Примеры
Проверка наличия пакета core/httpd
describe habitat_package(origin: 'core', name: 'httpd') do
it { should exist }
its('version') { should eq '2.4.35'}
its('release') { should eq '20190307151146'}
end
Ограничения
Доступ к API и командной строке
Habitat предоставляет некоторые данные через командную строку и другие данные через API шлюза HTTP.
Этот ресурс только доступен с использованием учетных данных командной строки.
Если вы используете интерфейс API без командной строки, экземпляры этого ресурса будут вести себя так, как будто искомый пакет не найден.
Поведение при отсутствии пакета
Если пакет не найден, этот ресурс ведет себя следующим образом:
-
it { should exist }будет проваленным тестом. Проверьте этот тест, если вы не уверены, будет ли ресурс существовать; в будущем он гарантированно будет надежным. -
name,origin,version, иreleaseбудут продолжать возвращать свои значения, установленные в параметрах ресурса. Это позволяет сообщениям об выводе четко ссылаться на отсутствующий пакет. -
identifierвернёт столько информации, сколько сможет собрать изname,origin,version, иrelease. - Все другие свойства с единственным значением вернут
nil. - Все свойства со значениями массивов и хэшей вернут пустые объекты.
- Все проверки вернут
false.
Поведение при совпадении нескольких пакетов
В системе может быть установлено несколько версий одного и того же пакета (или даже несколько релизов одной и той же версии одного и того же пакета). По этой причине, если вы недостаточно точно укажете параметры ресурса, вы можете получить соответствие с несколькими пакетами. В этих условиях этот ресурс вызовет исключение ArgumentError, и тест ресурса будет записан как неудачный.
Чтобы избежать этой возможности, полностью укажите параметры ресурса, включая version и release.
Чтобы перечислить все установленные версии и релизы пакета с заданным именем, используйте множественный ресурс habitat_packages.
Доступность
Установка
Этот ресурс находится в пакете ресурсов inspec-habitat. Вы можете использовать ресурс, установив зависимость профиля InSpec от этого пакета ресурсов. См. инструкции inspec-habitat
Версия
Этот ресурс впервые появился в версии 0.1.0 пакета ресурсов.
Параметры ресурса
Используйте параметры ресурсов для идентификации конкретного пакета, который вы хотите проверить.
habitat_package может принимать один параметр ресурса, идентификатор пакета String, или может принимать Hash компонентов идентификатора.
В качестве одной String
Используя этот подход, вы передаете идентификатор пакета как одну String. Он должен состоять из <origin>/<name>/<version>/<release>, хотя version и release являются необязательными.
describe habitat_package('core/httpd') do
it { should exist }
end
Использование отдельных компонентов идентификатора как Hash
Этот подход может облегчить написание тестов ресурсов, которые используют входные данные InSpec или переменные Ruby.
origin
String. Название origin (распределительного центра), предоставляющего пакет.
# Most common origin is 'core', publicly distributed packages created by Chef
describe habitat_package(origin: 'core', name: 'httpd') do
it { should exist }
end
# Your company might run a private origin
describe habitat_package(origin: 'mycorp', name: 'secret-sauce') do
it { should exist }
end
name
String. Название (уникальное в пространстве имен origin) пакета. Это может соответствовать нескольким пакетам; см. Поведение при совпадении нескольких пакетов.
describe habitat_package(origin: 'core', name: 'httpd') do
it { should exist }
end
release
String, 14-значный отметка времени формата ‘GGGGMMDDHHmmSS’. Номер выпуска пакета, определенный упаковщиком программного обеспечения. Если вы предоставляете его, вы также должны указать версию; при наличии всех четырех компонентов соответствие гарантировано уникальным.
describe habitat_package(origin: 'core', name: 'httpd', version: '2.3.5', release: '20190307151146') do
it { should exist }
end
version
String, обычно в формате 1.2.3, но форматы могут отличаться. Версия пакета, определенная автором программного обеспечения. Эта версия может соответствовать нескольким пакетам, поскольку несколько выпусков одной версии могут быть установлены совместно; см. Поведение при совпадении нескольких пакетов.
describe habitat_package(origin: 'core', name: 'httpd', version: '2.3.5') do
it { should exist }
end
Свойства
Используйте свойства для создания тестов, сравнивающих ожидаемое значение с фактическим значением.
identifier
String. Origin, имя, версия (если известна) и выпуск (если известен) соединены с /, чтобы создать идентификатор пакета.
describe habitat_package(origin: 'core', name: 'httpd') do
its('identifier') { should eq 'core/httpd/2.4.35/20190307151146' }
end
name
String. Название пакета, переданное в параметре ресурса. Всегда доступно, даже если ресурс не был найден. Смотрите также origin и version.
describe habitat_package(origin: 'core', name: 'httpd') do
its('name') { should cmp 'httpd' }
end
origin
String. Название origin пакета, переданное в параметре ресурса. Всегда доступно, даже если ресурс не был найден. См. также name и version.
describe habitat_package(origin: 'core', name: 'httpd') do
its('origin') { should cmp 'core' }
end
pkg_id
String. Полный идентификатор пакета в формате origin/name/version/release. Смотрите также name и version.
describe habitat_package(origin: 'core', name: 'httpd') do
its('pkg_id') { should cmp 'core/httpd/2.4.35/20190307151146' }
end
release
String. Номер выпуска пакета, назначенный упаковщиком. Эти значения всегда являются строками, но представляют собой 14-значные отметки времени. См. также version.
describe habitat_package(origin: 'core', name: 'httpd') do
its('release') { should be >= '20190307151146' }
end
version
String. Версия пакета, назначенная разработчиком проекта пакета. Хотя многие версии имеют 3-значный вид, нет установленного правила, и исключения часто встречаются. См. также release.
describe habitat_package(origin: 'core', name: 'httpd') do
its('version') { should be >= '2.2' }
end
Проверки
Используйте проверки для создания тестов, проверяющих истинность или ложность вопроса.
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/resources/habitat_package/