Spec-Zone.ru › Chef 18

Ресурс elasticsearch

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

Используйте ресурс elasticsearch для проверки состояния узла по отношению к работающему кластеру Elasticsearch. Chef InSpec извлекает список узлов из URL-адреса узла кластера, указанного (по умолчанию http://localhost:9200), и предоставляет возможность запроса различных параметров и состояний.

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс впервые стал доступен в версии v1.43.5 InSpec.

Синтаксис

describe elasticsearch do
  its('property') { should cmp 'value' }
end

Поддерживаемые параметры ресурса

Ресурс elasticsearch принимает несколько необязательных параметров ресурса:

url
URL верхнего уровня узла Elasticsearch в кластере. Если ваша установка Elasticsearch не обслуживается из каталога верхнего уровня на хосте, обязательно укажите полный URL-адрес; например: http://my-load-balancer/elasticsearch. По умолчанию: http://localhost:9200
username
имя пользователя для входа с использованием аутентификации HTTP-Basic. Если предоставлен username, также должен быть предоставлен password.
password
пароль для входа с использованием аутентификации HTTP-Basic. Если предоставлен password, также должен быть предоставлен username.
ssl_verify
если false, проверка сертификата SSL будет отключена. По умолчанию: true

Кроме того, ресурс elasticsearch позволяет фильтровать узлы, возвращаемые свойством, перед выполнением тестов:

describe elasticsearch.where { node_name == 'one-off-node' } do
  its('version') { should eq '1.2.3' }
end

describe elasticsearch.where { process.mlockall == false } do
  its('count') { should cmp 0 }
end

Чтобы просто проверить, существуют ли узлы, соответствующие критериям, используйте соответствие exist:

describe elasticsearch.where { cluster_name == 'my_cluster' } do
  it { should exist }
end

Свойства

Ниже приведены различные свойства ресурса:

Поскольку ресурс elasticsearch предназначен для использования в кластере, каждое свойство вернёт массив значений для каждого узла, соответствующего любым заданным критериям поиска. Использование соответствия cmp InSpec помогает избежать проблем при сравнении значений, когда есть только одно совпадение (например, когда кластер содержит только один узел или критерии фильтра where возвращают только один узел).

build_hash

Свойство build hash возвращает хэш сборки для каждого из узлов.

its('build_hash') { should cmp 'b2f0c09' }

cluster_name

Свойство cluster_name возвращает имена кластеров каждого из узлов.

its('cluster_name') { should cmp 'my_cluster' }

host

Свойство host возвращает имя хоста каждого из узлов. Может вернуть IP-адрес, если узел неправильно выполняет разрешение DNS или у него не задано имя хоста.

its('host') { should cmp 'my.hostname.mycompany.biz' }

http

Свойство http возвращает хэш параметров, связанных с HTTP, для каждого из узлов. В этом примере используется метод first, чтобы получить информацию о HTTP только для первого узла, что является способом удаления элемента из массива, если запрашивается только один узел.

its('http.first.max_content_length_in_bytes') { should cmp 123456 }

ingest

Свойство ingest возвращает параметры и возможности, связанные с ingest, такие как доступные процессоры.

its('ingest.first.processors.count') { should be >= 1 }

ip

Свойство ip возвращает IP-адрес каждого из узлов.

its('ip') { should cmp '192.168.1.100' }

jvm

Свойство jvm возвращает параметры, связанные с Java Virtual Machine, для каждого из узлов.

its('jvm.first.version') { should cmp '1.8.0_141' }

module_list

Свойство module_list возвращает список включенных модулей для каждого узла в кластере.

its('module_list.first') { should include 'my_module' }

modules

Свойство modules возвращает подробную информацию о каждом включенном модуле для каждого узла в кластере.

its('modules.first') { should include 'lang-groovy' }

node_name

Свойство node_name возвращает имя узла для каждого узла в кластере.

its('node_name') { should cmp 'node1' }

node_id

Свойство node_id возвращает идентификаторы узлов каждого из узлов в кластере.

its('node_id') { should include 'my_node_id' }

os

Свойство os возвращает информацию об ОС для каждого узла в кластере.

its('os.first.arch') { should cmp 'amd64' }

plugin_list

Свойство plugin_list возвращает список включенных плагинов для каждого узла в кластере. Для получения дополнительной информации о каждом плагине используйте свойство plugins.

its('plugin_list.first') { should include 'my_plugin' }

plugins

Свойство plugins возвращает подробную информацию о каждом включённом плагине для каждого узла в кластере.

its('plugins.first') { should include 'my_plugin' }

process

Свойство process возвращает информацию о процессе для каждого узла в кластере, например, идентификатор процесса.

its('process.first.mlockall') { should cmp true }

roles

Свойство roles возвращает роль для каждого из узлов в кластере.

its('roles') { should include 'master' }

settings

Свойство settings возвращает все параметры конфигурации для каждого узла в кластере. Эти параметры обычно включают те, которые заданы в elasticsearch.yml, а также те, которые заданы с помощью флагов -Des. или -E при запуске. Используйте inspec shell для просмотра различных ключей параметров.

its('settings.first.path.home') { should cmp '/usr/share/elasticsearch' }

total_indexing_buffer

Свойство total_indexing_buffer возвращает общий буфер индексирования для каждого узла в кластере.

its('total_indexing_buffer') { should cmp 123456 }

transport

Свойство transport возвращает параметры, связанные с транспортом, для каждого узла в кластере, такие как привязанные и опубликованные адреса.

its('transport.first.bound_address') { should cmp '1.2.3.4:9200' }

transport_address

Свойство transport_address возвращает привязанный адрес транспорта для каждого узла в кластере.

its('transport_address') { should cmp '1.2.3.4:9200' }

version

Свойство version возвращает версию Elasticsearch, работающую на каждом узле кластера.

its('version') { should cmp '5.5.2' }

Примеры

Тест проверки конкретного модуля. Использует дополнительный Ruby для поиска конкретного модуля и проверки значения. Для получения краткого списка имён каждого включённого модуля используйте свойство module_list.

modules = elasticsearch.modules.first
lang_groovy_module = modules.find { |mod| mod.name == 'lang-groovy' }

describe 'lang-groovy module version' do
  subject { lang_groovy_module }
  its('version') { should cmp '5.5.2' }
end

Тесты проверки конкретного плагина. Использует дополнительный Ruby для поиска конкретного плагина и проверки значения. Для получения краткого списка имён каждого включённого плагина используйте свойство plugin_list.

plugins = elasticsearch.plugins.first
my_plugin = plugins.find { |plugin| plugin.name == 'my_plugin' }

describe 'my_plugin plugin version' do
  subject { my_plugin }
  its('version') { should cmp '1.2.3' }
end

Соответствия

Полный список доступных соответствий см. на нашей странице соответствий.

© 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/elasticsearch/

Spec-Zone.ru

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