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