ресурс habitat_package
Используйте ресурс аудита habitat_package InSpec для проверки свойств отдельного пакета 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-значный временной отметки формата ‘ГГГГММДДЧЧммСС’. Номер выпуска пакета, определенный разработчиком программного обеспечения. Если вы предоставляете этот параметр, вы также должны указать версию; при наличии всех четырёх компонентов соответствие гарантированно уникальное.
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/