ресурс 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
Свойства
Предоставляются следующие свойства:
- build_hash cluster_name, host, http, ingest, ip, jvm, module_list, modules, node_name, node_id, os, plugin_list, plugins, process, roles, settings, total_indexing_buffer, transport, transport_address, version
Поскольку ресурс elasticsearch предназначен для использования в кластере, каждое свойство вернет массив значений для каждого узла, соответствующего предоставленным критериям поиска. Использование соответствия cmp InSpec помогает избежать проблем при сравнении значений, когда есть только один совпадение (например, когда кластер содержит только один узел или критерии фильтра where возвращают только один узел).
Примеры свойств
build_hash
Возвращает хеш сборки для каждого узла.
describe elasticsearch do
its('build_hash') { should cmp 'b2f0c09' }
end
cluster_name
Возвращает имена кластеров каждого из узлов.
describe elasticsearch do
its('cluster_name') { should cmp 'my_cluster' }
end
host
Возвращает имя хоста каждого из узлов. Это может вернуть IP-адрес, если узел неправильно выполняет разрешение DNS или у него нет имени хоста.
describe elasticsearch do
its('host') { should cmp 'my.hostname.mycompany.biz' }
end
http
Возвращает хеш настроек, относящихся к HTTP, для каждого узла. В этом примере используется метод first, чтобы получить информацию об HTTP только для первого узла, что является способом удаления элемента из массива, если запрашивается только один узел.
describe elasticsearch do
its('http.first.max_content_length_in_bytes') { should cmp 123456 }
end
ingest
Возвращает настройки и возможности, связанные с ingest, такие как доступные процессоры.
describe elasticsearch do
its('ingest.first.processors.count') { should be >= 1 }
end
ip
Возвращает IP-адрес каждого из узлов.
describe elasticsearch do
its('ip') { should cmp '192.168.1.100' }
end
jvm
Возвращает параметры Java Virtual Machine для каждого из узлов.
describe elasticsearch do
its('jvm.first.version') { should cmp '1.8.0_141' }
end
module_list
Возвращает список включенных модулей для каждого узла в кластере. Для получения дополнительной информации о каждом модуле используйте свойство modules.
describe elasticsearch do
its('module_list.first') { should include 'my_module' }
end
modules
Возвращает подробную информацию о каждом включенном модуле для каждого узла в кластере. Для получения краткого списка имен каждого из включенных модулей используйте свойство module_list. В этом примере используется дополнительный Ruby для поиска определенного модуля и утверждения значения.
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
node_name
Возвращает имя узла для каждого узла в кластере.
describe elasticsearch do
its('node_name') { should cmp 'node1' }
end
node_id
Возвращает идентификаторы узлов каждого из узлов в кластере.
describe elasticsearch do
its('node_id') { should include 'my_node_id' }
end
os
Возвращает информацию об ОС для каждого узла в кластере.
describe elasticsearch do
its('os.first.arch') { should cmp 'amd64' }
end
plugin_list
Возвращает список включенных плагинов для каждого узла в кластере. Для получения дополнительной информации о каждом плагине используйте свойство plugins.
describe elasticsearch do
its('plugin_list.first') { should include 'my_plugin' }
end
plugins
Возвращает подробную информацию о каждом включенном плагине для каждого узла в кластере. Для получения краткого списка имен каждого из включенных плагинов используйте свойство plugin_list. В этом примере используется дополнительный Ruby для поиска определенного плагина и утверждения значения.
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
process
Возвращает информацию о процессе для каждого узла в кластере, например, идентификатор процесса.
describe elasticsearch do
its('process.first.mlockall') { should cmp true }
end
roles
Возвращает роль для каждого узла в кластере.
describe elasticsearch.where { node_name == 'my_master_node' } do
it { should include 'master' }
end
settings
Возвращает все настройки конфигурации для каждого узла в кластере. Эти настройки обычно включают те, которые заданы в elasticsearch.yml, а также те, которые заданы с помощью флагов -Des. или -E при запуске. Используйте inspec shell для изучения различных ключей настроек, которые доступны.
describe elasticsearch do
its('settings.first.path.home') { should cmp '/usr/share/elasticsearch' }
end
total_indexing_buffer
Возвращает общий буфер индексирования для каждого узла в кластере.
describe elasticsearch do
its('total_indexing_buffer') { should cmp 123456 }
end
transport
Возвращает настройки, связанные с транспортом, для каждого узла в кластере, такие как привязанные и опубликованные адреса.
describe elasticsearch do
its('transport.first.bound_address') { should cmp '1.2.3.4:9200' }
end
transport_address
Возвращает привязанный адрес транспорта для каждого узла в кластере.
describe elasticsearch do
its('transport_address') { should cmp '1.2.3.4:9200' }
end
version
Возвращает версию Elasticsearch, работающую на каждом узле кластера.
describe elasticsearch do
its('version') { should cmp '5.5.2' }
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/