WIP: 6.3 support

This commit is contained in:
Michael Russell 2018-06-13 08:29:45 +02:00
parent a9f8403ffa
commit 6d82cf3142
No known key found for this signature in database
GPG key ID: A90C1696496085FE
17 changed files with 82 additions and 70 deletions

View file

@ -22,6 +22,8 @@ provisioner:
es_major_version: "<%= ENV['VERSION'] %>" es_major_version: "<%= ENV['VERSION'] %>"
<% if ENV['VERSION'] == '5.x' %> <% if ENV['VERSION'] == '5.x' %>
es_version: '5.6.9' es_version: '5.6.9'
es_package_name: 'elasticsearch'
es_use_snapshot_release: false
<% end %> <% end %>
<% end %> <% end %>

View file

@ -9,7 +9,7 @@ Ansible role for 6.x/5.x Elasticsearch. Currently this works on Debian and RedH
* Debian 8 * Debian 8
* Centos 7 * Centos 7
The latest Elasticsearch versions of 6.x are actively tested. **Only Ansible versions > 2.3.2 are supported, as this is currently the only version tested.** The latest Elasticsearch versions of 6.x and 5.x are actively tested. **Only Ansible versions > 2.3.2 are supported, as this is currently the only version tested.**
##### Dependency ##### Dependency
This role uses the json_query filter which [requires jmespath](https://github.com/ansible/ansible/issues/24319) on the local machine. This role uses the json_query filter which [requires jmespath](https://github.com/ansible/ansible/issues/24319) on the local machine.

View file

@ -1,6 +1,9 @@
--- ---
es_use_snapshot_release: true # TODO remove when 6.3 is released
es_major_version: "6.x" es_major_version: "6.x"
es_version: "6.2.4" es_version: "6.3.0"
es_enable_xpack: true
es_package_name: "elasticsearch"
es_version_lock: false es_version_lock: false
es_use_repository: true es_use_repository: true
es_templates_fileglob: "files/templates/*.json" es_templates_fileglob: "files/templates/*.json"
@ -27,7 +30,6 @@ es_max_open_files: 65536
es_max_threads: "{{ 2048 if ( es_version | version_compare('6.0.0', '<')) else 8192 }}" es_max_threads: "{{ 2048 if ( es_version | version_compare('6.0.0', '<')) else 8192 }}"
es_max_map_count: 262144 es_max_map_count: 262144
es_allow_downgrades: false es_allow_downgrades: false
es_enable_xpack: false
es_xpack_features: ["alerting","monitoring","graph","ml","security"] es_xpack_features: ["alerting","monitoring","graph","ml","security"]
#These are used for internal operations performed by ansible. #These are used for internal operations performed by ansible.
#They do not affect the current configuration #They do not affect the current configuration

View file

@ -27,7 +27,12 @@
- name: Debian - Ensure elasticsearch is installed - name: Debian - Ensure elasticsearch is installed
become: yes become: yes
apt: name=elasticsearch{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %} state=present force={{force_install}} allow_unauthenticated={{ 'no' if es_apt_key else 'yes' }} cache_valid_time=86400 apt:
name: {{ es_package_name }}{% if es_version is defined and es_version != "" %}={{ es_version }}{% endif %}
state: present
force: {{force_install}}
allow_unauthenticated: {{ 'no' if es_apt_key else 'yes' }}
cache_valid_time: 86400
when: es_use_repository when: es_use_repository
register: debian_elasticsearch_install_from_repo register: debian_elasticsearch_install_from_repo
notify: restart elasticsearch notify: restart elasticsearch

View file

@ -15,7 +15,10 @@
- name: RedHat - Install Elasticsearch - name: RedHat - Install Elasticsearch
become: yes become: yes
yum: name=elasticsearch{% if es_version is defined and es_version != "" %}-{{ es_version }}{% endif %} state=present update_cache=yes yum:
name: {{ es_package_name }}{% if es_version is defined and es_version != "" %}-{{ es_version }}{% endif %}
state: present
update_cache: yes
when: es_use_repository when: es_use_repository
register: redhat_elasticsearch_install_from_repo register: redhat_elasticsearch_install_from_repo
notify: restart elasticsearch notify: restart elasticsearch

View file

@ -60,9 +60,8 @@
- name: Install elasticsearch plugins - name: Install elasticsearch plugins
become: yes become: yes
command: "{{es_home}}/bin/elasticsearch-plugin install {{ item.plugin }} --batch --silent" command: "{{es_home}}/bin/elasticsearch-plugin install {{ item.url | default(item.plugin) }} --batch --silent"
register: plugin_installed register: plugin_installed
failed_when: "'ERROR' in plugin_installed.stdout"
changed_when: plugin_installed.rc == 0 changed_when: plugin_installed.rc == 0
with_items: "{{ es_plugins }}" with_items: "{{ es_plugins }}"
when: item.plugin in plugins_to_install when: item.plugin in plugins_to_install

View file

@ -5,6 +5,7 @@
- name: include elasticsearch-xpack-install.yml - name: include elasticsearch-xpack-install.yml
include: elasticsearch-xpack-install.yml include: elasticsearch-xpack-install.yml
when: es_install_xpack
#Security configuration #Security configuration
- name: include security/elasticsearch-security.yml - name: include security/elasticsearch-security.yml

View file

@ -18,7 +18,7 @@ shared_examples 'config::init' do |vars|
it { should be_running } it { should be_running }
end end
describe package('elasticsearch') do describe package(vars['es_package_name']) do
it { should be_installed } it { should be_installed }
end end

View file

@ -16,7 +16,7 @@ shared_examples 'multi::init' do |vars|
it { should be_running } it { should be_running }
end end
describe package('elasticsearch') do describe package(vars['es_package_name']) do
it { should be_installed } it { should be_installed }
end end

View file

@ -12,7 +12,7 @@ shared_examples 'package::init' do |vars|
it { should be_running } it { should be_running }
end end
describe package('elasticsearch') do describe package(vars['es_package_name']) do
it { should be_installed } it { should be_installed }
end end

View file

@ -10,7 +10,7 @@ shared_examples 'standard::init' do |vars|
it { should be_running } it { should be_running }
end end
describe package('elasticsearch') do describe package(vars['es_package_name']) do
it { should be_installed } it { should be_installed }
end end
@ -85,15 +85,22 @@ shared_examples 'standard::init' do |vars|
end end
for plugin in vars['es_plugins'] for plugin in vars['es_plugins']
plugin = plugin['plugin'] name = plugin['plugin']
describe file('/usr/share/elasticsearch/plugins/'+plugin) do describe file('/usr/share/elasticsearch/plugins/'+name) do
it { should be_directory } it { should be_directory }
it { should be_owned_by 'elasticsearch' } it { should be_owned_by 'elasticsearch' }
end end
#confirm plugins are installed and the correct version it 'should be installed and the right version' do
describe command('curl -s localhost:9200/_nodes/plugins | grep \'"name":"'+plugin+'","version":"'+vars['es_version']+'"\'') do plugins = curl_json('http://localhost:9200/_nodes/plugins')
its(:exit_status) { should eq 0 } version = nil
node, data = plugins['nodes'].first
data['plugins'].each do |plugin|
if plugin['name'] == name
version = plugin['version']
end
end
expect(version).to eql(vars['es_version'])
end end
end end

View file

@ -12,7 +12,7 @@ shared_examples 'xpack::init' do |vars|
it { should be_running } it { should be_running }
end end
describe package('elasticsearch') do describe package(vars['es_package_name']) do
it { should be_installed } it { should be_installed }
end end

View file

@ -10,7 +10,7 @@ shared_examples 'xpack_standard::init' do |vars|
it { should be_running } it { should be_running }
end end
describe package('elasticsearch') do describe package(vars['es_package_name']) do
it { should be_installed } it { should be_installed }
end end
@ -96,60 +96,48 @@ shared_examples 'xpack_standard::init' do |vars|
end end
end end
describe file('/usr/share/elasticsearch/plugins/x-pack') do # X-Pack is no longer installed as a plugin in elasticsearch
it { should be_directory } if vars['es_major_version'] == '5.x'
it { should be_owned_by 'elasticsearch' } describe file('/usr/share/elasticsearch/plugins/x-pack') do
it { should be_directory }
it { should be_owned_by 'elasticsearch' }
end
describe 'x-pack-core plugin' do
it 'should be installed with the correct version' do
plugins = curl_json('http://localhost:9200/_nodes/plugins')
node, data = plugins['nodes'].first
version = 'plugin not found'
name = 'x-pack'
data['plugins'].each do |plugin|
if plugin['name'] == name
version = plugin['version']
end
end
expect(version).to eql(vars['es_version'])
end
end
describe file('/etc/elasticsearch/security_node/x-pack') do
it { should be_directory }
it { should be_owned_by 'elasticsearch' }
end
#Test users file, users_roles and roles.yml
describe file('/etc/elasticsearch/security_node/x-pack/users_roles') do
it { should be_owned_by 'elasticsearch' }
end
describe file('/etc/elasticsearch/security_node/x-pack/users') do
it { should be_owned_by 'elasticsearch' }
end
end end
describe command('curl -s localhost:9200/_nodes/plugins?pretty=true -u es_admin:changeMeAgain | grep x-pack') do describe command('curl -s localhost:9200/_nodes/plugins?pretty=true -u es_admin:changeMeAgain | grep x-pack') do
its(:exit_status) { should eq 0 } its(:exit_status) { should eq 0 }
end end
describe file('/etc/elasticsearch/security_node/x-pack') do
it { should be_directory }
it { should be_owned_by 'elasticsearch' }
end
describe file('/usr/share/elasticsearch/plugins/x-pack') do
it { should be_directory }
it { should be_owned_by 'elasticsearch' }
end
describe file('/usr/share/elasticsearch/plugins/x-pack') do
it { should be_directory }
it { should be_owned_by 'elasticsearch' }
end
describe 'x-pack-core plugin' do
it 'should be installed with the correct version' do
plugins = curl_json('http://localhost:9200/_nodes/plugins')
node, data = plugins['nodes'].first
version = 'plugin not found'
if Gem::Version.new(vars['es_version']) >= Gem::Version.new('6.2')
name = 'x-pack-core'
else
name = 'x-pack'
end
data['plugins'].each do |plugin|
if plugin['name'] == name
version = plugin['version']
end
end
expect(version).to eql(vars['es_version'])
end
end
#Test users file, users_roles and roles.yml
describe file('/etc/elasticsearch/security_node/x-pack/users_roles') do
it { should be_owned_by 'elasticsearch' }
end
describe file('/etc/elasticsearch/security_node/x-pack/users') do
it { should be_owned_by 'elasticsearch' }
end
describe command('curl -s localhost:9200/_xpack') do describe command('curl -s localhost:9200/_xpack') do
its(:stdout_as_json) { should include('features' => include('security' => include('enabled' => false))) } its(:stdout_as_json) { should include('features' => include('security' => include('enabled' => false))) }
its(:stdout_as_json) { should include('features' => include('watcher' => include('enabled' => false))) } its(:stdout_as_json) { should include('features' => include('watcher' => include('enabled' => false))) }

View file

@ -6,7 +6,8 @@
roles: roles:
- { role: elasticsearch, es_instance_name: "node1" } - { role: elasticsearch, es_instance_name: "node1" }
vars: vars:
es_use_repository: "true" es_enable_xpack: false
es_package_name: "elasticsearch-oss"
es_heap_size: "1g" es_heap_size: "1g"
es_plugins: es_plugins:
- plugin: ingest-geoip - plugin: ingest-geoip

View file

@ -7,9 +7,9 @@
roles: roles:
- { role: elasticsearch, es_api_port: 9200, es_config: { "http.port": 9200, "transport.tcp.port":9300, discovery.zen.ping.unicast.hosts: "localhost:9300" }, es_instance_name: "security_node" } - { role: elasticsearch, es_api_port: 9200, es_config: { "http.port": 9200, "transport.tcp.port":9300, discovery.zen.ping.unicast.hosts: "localhost:9300" }, es_instance_name: "security_node" }
vars: vars:
es_xpack_custom_url: "https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-{{ es_version }}.zip"
es_heap_size: 2g es_heap_size: 2g
es_enable_xpack: true es_enable_xpack: true
es_xpack_custom_url: "https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-{{ es_version }}.zip"
es_xpack_features: es_xpack_features:
- monitoring - monitoring
- graph - graph

View file

@ -10,7 +10,8 @@
vars: vars:
es_heap_size: "1g" es_heap_size: "1g"
es_templates: true es_templates: true
es_version: "{{ '6.1.1' if es_major_version == '6.x' else '5.4.0'}}" # This is set to an older version than the current default to force an upgrade es_version: "{{ '6.2.4' if es_major_version == '6.x' else '5.6.6' }}" # This is set to an older version than the current default to force an upgrade
es_use_snapshot_release: false # TODO remove when 6.3 is released
es_enable_xpack: true es_enable_xpack: true
es_xpack_license: "{{ lookup('file', '/tmp/license.json') }}" es_xpack_license: "{{ lookup('file', '/tmp/license.json') }}"
es_plugins: es_plugins:

View file

@ -6,3 +6,6 @@ init_script: "/etc/init.d/elasticsearch"
#add supported features here #add supported features here
supported_xpack_features: ["alerting","monitoring","graph","security"] supported_xpack_features: ["alerting","monitoring","graph","security"]
reserved_xpack_users: ["elastic","kibana","logstash_system"] reserved_xpack_users: ["elastic","kibana","logstash_system"]
# X-Pack used to be installed as a plugin. For versions after 6.3 we don't need to install it anymore
es_install_xpack: "{{ true if ( es_version | version_compare('6.3.0', '<')) else false }}"