Spec-Zone.ru › Chef 16

ресурс habitat_services

[править на GitHub]

Используйте ресурс проверки 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API