Spec-Zone.ru › Chef 17

ресурс habitat_services

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

Используйте ресурс аудита InSpec habitat_service (единственное число) для проведения глубокого аудита одного сервиса.

Используйте ресурс аудита 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 предоставляет некоторые данные через командную строку (CLI) и другие данные через API шлюза HTTP. Для использования всех функций этого ресурса, используйте набор учетных данных, который включает API. Ограниченные данные доступны через командную строку. Более подробную информацию см. в документации train-habitat.

Если вы используете интерфейс командной строки без API, недоступные свойства вернут пустые массивы или nil, а недоступные критерии фильтра никогда не будут соответствовать. Подробную информацию см. в описании каждого свойства и критерия фильтра.

Доступность

Установка

Этот ресурс находится в пакете ресурсов inspec-habitat. Вы можете использовать ресурс, установив зависимость профиля InSpec от пакета ресурсов. См. инструкции inspec-habitat.

Версия

Этот ресурс впервые стал доступен в версии 0.1.0 пакета ресурсов.

Параметры ресурса

Параметры ресурса — это аргументы, передаваемые ресурсу в коде управления.

Этот ресурс не принимает параметры ресурса, что типично для ресурсов во множественном числе.

Критерии фильтрации

Критерии фильтрации используются для выбора сервисов, которые вы хотите изучить. Если критерии фильтрации не используются, выбираются все сервисы.

dependency_names

Массив строк в формате origin/name. Каждая строка — это полное имя зависимости сервиса, по которому выполняется фильтрация.

Требуется подключение к API; недоступно (никогда не соответствует) через CLI.

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; недоступно (никогда не соответствует) через CLI.

# 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; недоступно (всегда пустой массив) через CLI.

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; недоступно (никогда не соответствует) через CLI.

# 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