From 317a107988146855614034252ad2b671255f5efe Mon Sep 17 00:00:00 2001 From: Jorge Niedbalski Date: Tue, 22 May 2018 17:55:56 -0400 Subject: [PATCH] [kibana] enforce index creation for ELK > 5 (debian) The default index isn't created automatically when using ELK > 5.x. This commit adds a new task into the post-deploy taskset to force the creation of the default index. This patch also enforces the kibana config to set index as defaultIndex without the need for the defaultIndex property to already exists , preventing the error exposed on the public bug. Also added a new option named kibana_default_index_options, with a default index.mapper.dynamic set to true, this option can be extended by the operator and they will be applied to the index. Change-Id: Ica63a5fb30947f7ebae6cf8c80500a7dd0907211 Closes-Bug: #1772687 Signed-off-by: Jorge Niedbalski --- .../templates/elasticsearch.yml.j2 | 1 + ansible/roles/kibana/defaults/main.yml | 3 +- ansible/roles/kibana/tasks/post_config.yml | 52 +++++++------------ 3 files changed, 22 insertions(+), 34 deletions(-) diff --git a/ansible/roles/elasticsearch/templates/elasticsearch.yml.j2 b/ansible/roles/elasticsearch/templates/elasticsearch.yml.j2 index de3fcda3ad..2f335da89d 100644 --- a/ansible/roles/elasticsearch/templates/elasticsearch.yml.j2 +++ b/ansible/roles/elasticsearch/templates/elasticsearch.yml.j2 @@ -18,3 +18,4 @@ path.data: "/var/lib/elasticsearch/data" path.logs: "/var/log/kolla/elasticsearch" path.scripts: "/etc/elasticsearch/scripts" indices.fielddata.cache.size: 40% +action.auto_create_index: "true" diff --git a/ansible/roles/kibana/defaults/main.yml b/ansible/roles/kibana/defaults/main.yml index 28bf4cc3f2..71bf00d142 100644 --- a/ansible/roles/kibana/defaults/main.yml +++ b/ansible/roles/kibana/defaults/main.yml @@ -29,7 +29,8 @@ kibana_default_index_pattern: "{{ kibana_log_prefix }}-*" kibana_default_index: title: "{{ kibana_default_index_pattern }}" timeFieldName: "@timestamp" - +kibana_default_index_options: + index.mapper.dynamic: true #################### # Docker diff --git a/ansible/roles/kibana/tasks/post_config.yml b/ansible/roles/kibana/tasks/post_config.yml index 1acdbd4deb..108c25662f 100644 --- a/ansible/roles/kibana/tasks/post_config.yml +++ b/ansible/roles/kibana/tasks/post_config.yml @@ -5,6 +5,15 @@ port: "{{ kibana_server_port }}" run_once: true +- name: Register the kibana index in elasticsearch + uri: + url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana" + method: PUT + body: "{{ kibana_default_index_options | to_json }}" + body_format: json + status_code: 200, 201 + run_once: true + - name: Wait for kibana to register in elasticsearch uri: url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana" @@ -15,6 +24,16 @@ delay: 2 run_once: true +- name: Change kibana config to set index as defaultIndex + uri: + url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana/config/*" + method: PUT + body: + defaultIndex: "{{ kibana_default_index_pattern }}" + body_format: json + status_code: 200, 201 + run_once: true + - name: Get kibana default indexes uri: HEADER_Content-Type: application/json @@ -44,36 +63,3 @@ - kibana_default_index is defined - kibana_default_indexes is defined - kibana_default_indexes['.kibana']['mappings']['config']['properties']['defaultIndex'] is not defined - -- name: Find kibana version - command: docker exec -t kibana /opt/kibana/bin/kibana --version - register: kibana_version - run_once: true - changed_when: true - when: - - kibana_default_index is defined - - kibana_default_indexes is defined - - kibana_default_indexes['.kibana']['mappings']['config']['properties']['defaultIndex'] is not defined - -- set_fact: - kibana_version: "{{ kibana_version.stdout }}" - run_once: true - connection: local - when: - - kibana_default_index is defined - - kibana_default_indexes is defined - - kibana_default_indexes['.kibana']['mappings']['config']['properties']['defaultIndex'] is not defined - -- name: Change kibana config to set index as defaultIndex - uri: - url: "http://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana/config/{{ kibana_version }}" - method: PUT - body: - defaultIndex: "{{ kibana_default_index_pattern }}" - body_format: json - status_code: 200 - run_once: true - when: - - kibana_default_index is defined - - kibana_default_indexes is defined - - kibana_default_indexes['.kibana']['mappings']['config']['properties']['defaultIndex'] is not defined