Отчётчики Chef InSpec
Введён в Chef InSpec 1.51.6
Отчётчик — это механизм для форматирования и предоставления результатов выполнения аудита Chef InSpec.
Chef InSpec позволяет выводить результаты ваших тестов в один или несколько отчётчиков. Настройте отчётчик(и) с помощью параметра --reporter или в файле конфигурации общего назначения с помощью параметра --config (или --json-config, до версии v3.6). Хотя вы можете настроить несколько отчётчиков для записи в разные файлы, только один отчётчик может выводить данные на экран (stdout).
Синтаксис
Вы можете указать один или несколько отчётчиков с помощью флага командной строки --reporter. Вы также можете указать вывод, добавив путь, разделённый двоеточием.
Вывод json на экран.
inspec exec example_profile --reporter json
# or explicitly specifying output to STDOUT:
inspec exec example_profile --reporter json:-
Вывод yaml на экран
inspec exec example_profile --reporter yaml
# or
inspec exec example_profile --reporter yaml:-
Вывод cli на экран и запись json в файл.
inspec exec example_profile --reporter cli json:/tmp/output.json
Не выводить ничего на экран и записать junit и html в файл.
inspec exec example_profile --reporter junit2:/tmp/junit.xml html:www/index.html
Вывод json на экран и запись в файл. Запись junit в файл.
inspec exec example_profile --reporter json junit2:/tmp/junit.xml | tee out.json
Если вы хотите передать профили непосредственно после указания отчётчиков, вам необходимо использовать флаг окончания опций --.
inspec exec --reporter json junit2:/tmp/junit.xml -- profile1 profile2
Если вы используете опцию командной строки --config, вы также можете настроить отчётчики.
Вывод cli на экран.
{
"reporter": {
"cli" : {
"stdout" : true
}
}
}
Вывод cli на экран и запись json в файл.
{
"reporter": {
"cli" : {
"stdout" : true
},
"json" : {
"file" : "/tmp/output.json",
"stdout" : false
}
}
}
Параметры отчётчиков
Ниже приведены параметры командной строки, которые можно использовать для изменения поведения отчётчиков. Многие из этих параметров позволяют ограничивать размер отчёта, поскольку некоторые отчётчики (например, отчётчик json-automate) имеют ограничение на общий размер отчёта, который может быть обработан.
-
--diff,--no-diff -
Включает сравнение текстовых различий в выводе не пройденного теста (по умолчанию:
true). -
Используйте
--no-diffдля ограничения размера вывода отчёта, когда тесты содержат большое количество текстового вывода. --filter-empty-profiles-
Удаляет пустые профили (те, которые содержат нулевые управления, такие как пакеты ресурсов) из вывода отчётчика.
-
--reporter-backtrace-inclusion,--no-reporter-backtrace-inclusion -
Включает трассировку стека кода в данных отчёта (по умолчанию:
true). -
Параметр
--no-reporter-backtrace-inclusionможно использовать для ограничения размера отчёта, когда в выводе присутствуют большие трассировки стека кода. --reporter-include-source-
(Только отчётчик командной строки) Включает полный исходный код управлений в отчёт.
--reporter-message-truncation=N-
Количество символов для обрезки сообщений об ошибках в данных отчёта (по умолчанию: нет обрезки).
-
Это может быть использовано для ограничения размера отчётов, когда сообщения об ошибках являются чрезвычайно большими.
Поддерживаемые отчётчики
Ниже приведены текущие поддерживаемые отчётчики:
cli
Это базовый текстовый отчёт. Он включает информацию о пройденных и не пройденных тестах и содержит общий итог в конце.
json
Этот отчётчик содержит всю информацию о профилях и результатах тестов в стандартном формате JSON. Вы можете дополнительно передать произвольные структурированные данные JSON, задав конфигурацию JSON с параметром --config.
Например:
{
"reporter": {
"json": {
"stdout": true,
"passthrough": {
"a": 1,
"b": false
}
}
}
}
json-min
Этот отчётчик — это сокращённая версия json и включает только результаты тестов.
yaml
Этот отчётчик содержит всю информацию о профилях и результатах тестов в стандартном формате YAML.
документация
Этот отчётчик — это очень минимальный текстовый отчёт. Он показывает, какие тесты прошли по имени и содержит небольшой сводный результат в конце.
junit2
Этот отчётчик выводит стандартную спецификацию JUnit в формате XML и рекомендуется для всех новых пользователей JUnit.
junit
Этот устаревший отчётчик выводит нестандартный XML JUnit и предоставляется только для обратной совместимости.
progress
Этот отчётчик очень сжатый и предоставляет вам символ .(проход), f(не проход) или *(пропуск) за тест и небольшой сводный результат в конце.
json-rspec
Этот отчётчик содержит всю информацию из исполнителя rspec. В отличие от отчётчика json, он включает в себя специфичные для rspec детали.
html
Этот отчётчик — устаревший HTML-отчётчик RSpec, который сохраняется для обратной совместимости. Сгенерированный отчёт не осведомлён о профилях или управлениях и содержит только несортированную информацию о тестах. Большинство пользователей должны перейти к отчётчику html2 для более полных данных.
html2
Этот отчётчик — улучшенный HTML-отчётчик, который содержит полные данные о структуре профиля, управлениях и тестах. Сгенерированный отчёт отображает HTML-код для просмотра ваших тестов в браузере.
Для работы с отчётчиком html2 не требуется настройка. Однако доступны две опции — alternate_css_file и alternate_js_file, для настройки. Эти опции устанавливаются в файле конфигурации в формате JSON, который использует Chef InSpec. Подробности см. в нашем руководстве по файлам конфигурации.
Например:
{
"version": "1.2",
"plugins": {
"inspec-reporter-html2": {
"alternate_js_file":"/var/www/js/my-javascript.js",
"alternate_css_file":"/var/www/css/my-style.css"
}
}
}
alternate_css_file
Указывает полный путь к расположению файла CSS, который будет прочитан и встроен в HTML-отчёт. Значение по умолчанию CSS не будет включено.
alternate_js_file
Указывает полный путь к расположению файла JavaScript, который будет прочитан и встроен в HTML-отчёт. Значение по умолчанию JavaScript не будет включено. Файл JavaScript должен реализовать по крайней мере функцию pageLoaded(), которая будет вызываться событием onload элемента HTML body.
Отчётчик Automate
Тип отчётчика automate — это специальный отчётчик, который отправляет свои результаты по сети в Chef Automate. Для использования этого отчётчика необходимо передать правильную конфигурацию через конфигурацию json --config.
Пример конфигурации:
{
"reporter": {
"automate" : {
"stdout" : false,
"url" : "https://YOUR_A2_URL/data-collector/v0/",
"token" : "YOUR_A2_ADMIN_TOKEN",
"insecure" : true,
"node_name" : "inspec_test_node",
"environment" : "prod"
}
}
}
Обязательные поля
stdout
Это подавит или покажет отчёт automate в экране командной строки по завершении.
url
Это ваш URL Automate 2. В конце добавьте data-collector/v0/.
токен
Это ваш токен Automate 2. Вы можете сгенерировать этот токен, перейдя на вкладку «Администрирование» в A2, а затем в «API-ключи».
Дополнительные поля
небезопасный
Это отключит или включит проверку ssl при доступе к экземпляру Automate 2.
имя_узла
Это будет имя узла, которое отображается в Automate.
uuid_узла
Это будет UUID узла, который отображается в Chef Automate. Используйте один статический UUID для каждого узла для всех ваших отчётов. Вам необходимо указать node_uuid в файле конфигурации Chef InSpec, если вы запускаете Chef InSpec вне кулинарной книги аудита или другой среды, где chef_guid или node_uuid уже известны Chef InSpec.
среда
Это установит метаданные среды для Automate.
Отчётчик JSON-Automate
Отчётчик json-automate — это специальный отчётчик, который подготавливает формат данных, используемый отчётчиком Automate. json-automate не взаимодействует по сети; он просто генерирует формат отчёта JSON, который будет потреблять Automate. Отметим, что отчёт основан на отчётчике json с указанными изменениями:
- Управления, которые появляются в дочерних профилях, дублируются по ID, объединяя их в родительский профиль.
- Дочерние профили удаляются, что приводит к сплющиванию отчёта.
Отчётчик json-automate в основном используется для внутренних потребностей, но некоторые пользователи могут найти его полезным, если им нужен отчётчик на основе JSON, который объединяет управления.
© 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/reporters/