ресурс habitat_services
Используйте ресурс проверки habitat_service (единственное число) InSpec, чтобы выполнить глубокую проверку одного сервиса.
Используйте ресурс проверки habitat_services (множественное число) InSpec, чтобы перечислить сервисы Habitat и выполнить операции с группой сервисов.
Доступность
Статус: ЭКСПЕРИМЕНТАЛЬНЫЙ
Этот ресурс, как и все ресурсы пакета inspec-habitat, находится на ранних стадиях разработки и тестирования. Функциональность может быть неисправной, неполной или в будущем может быть удалена. Если вы заинтересованы в развитии этого проекта, присоединяйтесь к обсуждению или вносите свой вклад в проект inspec-habitat.
Подключение к Habitat
Чтобы настроить inspec для связи с Chef Habitat, обязательно следуйте инструкциям по настройке параметров подключения здесь. Это предотвратит ошибки «неподдерживаемая платформа».
Примеры
Убедитесь, что есть 2 сервиса с ожидаемыми именами
describe habitat_services do
its('count') { should cmp 2 }
its('names') { should include 'httpd' }
its('names') { should include 'memcached' }
end
Убедитесь, что все запущенные сервисы были обновлены после 1 января 2018 года
describe habitat_services.where { release <= '20180101000000' } do
it { should_not exist }
end
Убедитесь, что gcc не является зависимостью ни одного сервиса
# One way - list all services, insist none have a dependency on gcc
describe habitat_services do
its('dependency_names') { should_not include 'core/gcc' }
end
# Another way - list all services with a dependency on gcc, insist there are none
describe habitat_services.where { dependency_names.include?('core/gcc') } do
it { should_not exist }
end
Найдите сервисы, а затем изучите их подробно с помощью habitat_service
# Use the plural resource as a data lookup (not as a test)...
habitat_services.where { origin != 'core' }.habitat_service_params.each do |params|
# ... then use the singular resource to do in-depth testing
describe habitat_service(params) do
its('release') { should_not be_standalone }
end
end
Ограничения
Доступ через API и через командную строку
Habitat предоставляет определенные данные через командную строку и другие данные через API HTTP-шлюза. Для использования всех возможностей этого ресурса используйте набор учетных данных, включающий API. Через командную строку доступна ограниченная информация. Более подробную информацию см. в документации train-habitat.
Если вы используете интерфейс командной строки без API, недоступные свойства будут возвращать пустые массивы или nil, а недоступные критерии фильтра никогда не будут соответствовать. Подробности см. для каждого свойства и критерия фильтра.
Доступность
Установка
Этот ресурс находится в пакете ресурсов inspec-habitat. Вы можете использовать ресурс, установив зависимость профиля InSpec от пакета ресурсов. Смотрите инструкции по установке inspec-habitat.
Версия
Этот ресурс впервые появился в версии 0.1.0 пакета ресурсов.
Параметры ресурса
Параметры ресурса — это аргументы, передаваемые ресурсу в коде управления.
Этот ресурс не принимает параметры ресурса, что типично для ресурсов во множественном числе.
Критерии фильтрации
Критерии фильтрации используются для выбора сервисов, которые вы хотите проверить. Если критерии фильтрации не указаны, выбираются все сервисы.
dependency_names
Массив строк в формате origin/name. Каждая строка — это квалифицированное имя зависимости сервиса, который фильтруется.
Требуется подключение к API; недоступно (никогда не соответствует) через командную строку.
describe habitat_services.where { dependency_names.include?('core/gcc') } do
it { should_not exist }
end
name
Строка. (Неквалифицированное) имя сервиса.
# No services named *ftp* permitted
describe habitat_services.where(name: /ftp/) do
it { should_not exist }
end
origin
Строка. Имя источника, создавшего пакет, который поддерживает сервис.
# Examine only services released by Chef
describe habitat_services.where(origin: 'chef') do
its('topologies') { should_not include 'standalone' }
end
release
Строка. 14-значная метка времени в формате YYYYMMDDHHMmmSS. Метка времени отражает время выпуска пакета, который поддерживает сервис. Эти строки можно сортировать и сравнивать.
# Examine packages older than Jan 1 2018
describe habitat_services.where { release < '20180101000000' } do
its('update_strategies' ) { should_not include 'none' }
end
# Examine packages older than 1 year
describe habitat_services.where { Date.parse(release[0..7]) < Date.today - 365 } do
its('update_strategies' ) { should_not include 'none' }
end
# Another way
describe habitat_services.where { release < (Date.today - 365).strftime('%Y%m%d000000') } do
its('update_strategies' ) { should_not include 'none' }
end
topology
Строка, отражающая топологию сервиса. Значения включают standalone и leader (для лидера-ведомого). См. документацию Habitat для информации о значениях.
# HA or the highway
describe habitat_services.where(topology: 'standalone') do
it { should_not exist }
end
update_strategy
Строка, отражающая, как следует обновлять программный пакет, поддерживающий сервис. Значения включают none, rolling, и at-once. См. документацию Habitat для информации о значениях.
Требуется подключение к API; недоступно (никогда не соответствует) через командную строку.
# No YOLO
describe habitat_services.where(update_strategy: 'at-once') do
it { should_not exist }
end
Свойства
Используйте свойства, чтобы создавать тесты, которые сравнивают ожидаемое значение с фактическим значением.
count
Число. Количество сервисов, соответствующих критериям фильтрации.
# Expect 12 total
describe habitat_services do
its(count) { should cmp 12 }
end
describe habitat_services.where(update_strategy: 'at-once') do
it { should_not exist }
its(count) { should cmp 0 } # Same as `should_not exist`
end
dependency_names
Массив строк в формате origin/name. Каждая строка — это квалифицированное имя зависимости сервиса, выбранного критериями фильтрации. Этот список дедублицирован.
Требуется подключение к API; недоступно (всегда пустой массив) через командную строку.
describe habitat_services do
its('dependency_names') { should_not include 'core/gcc' }
end
habitat_service_params
Хэш. Возвращает набор параметров, которые можно передать напрямую в habitat_service (единственное число), чтобы загрузить отдельный сервис для подробного анализа.
# Use the plural resource as a data lookup (not as a test)...
habitat_services.where { origin != 'core' }.habitat_service_params.each do |params|
# ... then use the singular resource to do in-depth testing
describe habitat_service(params) do
its('release') { should_not be_standalone }
end
end
names
Массив строк. Неквалифицированное имя сервиса, например, «httpd». Этот список дедублицирован, хотя имя почти всегда уникально.
describe habitat_services do
its('names') { should include 'httpd' }
its('names') { should include 'memcached' }
its('names') { should_not include 'telnetd' }
end
origins
Массив строк. Имена источников, создавших пакеты, которые поддерживают соответствующие сервисы. Этот список дедублицирован.
# Only allow core and mycorp-packaged services
describe habitat_services do
its('origins') { should include 'core' }
its('origins') { should include 'mycorp' }
# Advanced usage - count an array-valued property
its('origins', 'count') { should cmp 2 }
end
releases
Массив строк. Каждая строка — это 14-значная метка времени в формате YYYYMMDDHHMmmSS. Метка времени отражает время выпуска пакета, который поддерживает сервис. Эти строки можно сортировать и сравнивать. Этот список дедублицирован.
# We had a bad Monday
describe habitat_services do
its('releases') { should_not include '20180325000000' }
end
topologies
Массив строк, отражающий топологию соответствующих сервисов. Значения включают standalone и leader (для лидера-ведомого). См. документацию Habitat для информации о значениях. Этот список дедублицирован.
describe habitat_services do
its('topologies') { should_not include 'standalone' }
end
update_strategies
Массив строк, отражающий, как следует обновлять программный пакет, поддерживающий сервисы, которые соответствуют фильтру. Значения включают none, rolling, и at-once. См. документацию Habitat для информации о значениях. Этот список дедублицирован.
Требуется подключение к API; недоступно (никогда не соответствует) через командную строку.
# No YOLO
describe habitat_services do
its('update_strategies') { should_not include 'at-once' }
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_services/