From 15e62f813461d519da6e766f72f60f9a07fb6628 Mon Sep 17 00:00:00 2001 From: vgusev Date: Wed, 8 Nov 2017 13:21:39 +0400 Subject: [PATCH] Add a possibility to deploy Elasticsearch 5.x version Elasticsearch 2.x version is deployed by default Change-Id: I78e714807cf5925a9619961ab145f27ef0210652 --- elasticsearch/client/init.sls | 3 +- elasticsearch/files/{ => v2}/elasticsearch | 0 .../files/{ => v2}/elasticsearch.yml | 0 .../files/{ => v2}/es_template_audit.json | 0 .../es_template_kibana.json} | 0 .../files/{ => v2}/es_template_log.json | 0 .../{ => v2}/es_template_notification.json | 0 elasticsearch/files/{ => v2}/logging.yml | 0 elasticsearch/files/v5/elasticsearch | 76 +++ elasticsearch/files/v5/elasticsearch.yml | 436 ++++++++++++++++++ elasticsearch/files/v5/es_template_audit.json | 125 +++++ .../files/v5/es_template_kibana.json | 295 ++++++++++++ elasticsearch/files/v5/es_template_log.json | 228 +++++++++ .../files/v5/es_template_notification.json | 163 +++++++ elasticsearch/files/v5/jvm.options | 112 +++++ elasticsearch/files/v5/log4j2.properties | 74 +++ elasticsearch/map.jinja | 4 +- elasticsearch/server/init.sls | 46 +- metadata/service/client.yml | 15 +- metadata/service/server/cluster.yml | 3 + metadata/service/server/local.yml | 3 + metadata/service/server/single.yml | 3 + tests/pillar/cluster.sls | 3 +- tests/pillar/curator.sls | 1 + tests/pillar/single.sls | 1 + 25 files changed, 1580 insertions(+), 11 deletions(-) rename elasticsearch/files/{ => v2}/elasticsearch (100%) rename elasticsearch/files/{ => v2}/elasticsearch.yml (100%) rename elasticsearch/files/{ => v2}/es_template_audit.json (100%) rename elasticsearch/files/{es_template_kibana4.json => v2/es_template_kibana.json} (100%) rename elasticsearch/files/{ => v2}/es_template_log.json (100%) rename elasticsearch/files/{ => v2}/es_template_notification.json (100%) rename elasticsearch/files/{ => v2}/logging.yml (100%) create mode 100644 elasticsearch/files/v5/elasticsearch create mode 100644 elasticsearch/files/v5/elasticsearch.yml create mode 100644 elasticsearch/files/v5/es_template_audit.json create mode 100644 elasticsearch/files/v5/es_template_kibana.json create mode 100644 elasticsearch/files/v5/es_template_log.json create mode 100644 elasticsearch/files/v5/es_template_notification.json create mode 100644 elasticsearch/files/v5/jvm.options create mode 100644 elasticsearch/files/v5/log4j2.properties diff --git a/elasticsearch/client/init.sls b/elasticsearch/client/init.sls index c950026..c169e97 100644 --- a/elasticsearch/client/init.sls +++ b/elasticsearch/client/init.sls @@ -39,9 +39,10 @@ elasticsearch_index_{{ index_name }}: {%- if index.get('force_operation', False) %} elasticsearch_index_{{ index_name }}_{{ operation }}: + {% set curdate = None | strftime('%Y.%m.%d') %} module.run: - name: elasticsearch.index_{{ operation }} - - index: {{ index_name }} + - index: {{ index_name }}-{{ curdate }} {%- endif %} {%- endfor %} diff --git a/elasticsearch/files/elasticsearch b/elasticsearch/files/v2/elasticsearch similarity index 100% rename from elasticsearch/files/elasticsearch rename to elasticsearch/files/v2/elasticsearch diff --git a/elasticsearch/files/elasticsearch.yml b/elasticsearch/files/v2/elasticsearch.yml similarity index 100% rename from elasticsearch/files/elasticsearch.yml rename to elasticsearch/files/v2/elasticsearch.yml diff --git a/elasticsearch/files/es_template_audit.json b/elasticsearch/files/v2/es_template_audit.json similarity index 100% rename from elasticsearch/files/es_template_audit.json rename to elasticsearch/files/v2/es_template_audit.json diff --git a/elasticsearch/files/es_template_kibana4.json b/elasticsearch/files/v2/es_template_kibana.json similarity index 100% rename from elasticsearch/files/es_template_kibana4.json rename to elasticsearch/files/v2/es_template_kibana.json diff --git a/elasticsearch/files/es_template_log.json b/elasticsearch/files/v2/es_template_log.json similarity index 100% rename from elasticsearch/files/es_template_log.json rename to elasticsearch/files/v2/es_template_log.json diff --git a/elasticsearch/files/es_template_notification.json b/elasticsearch/files/v2/es_template_notification.json similarity index 100% rename from elasticsearch/files/es_template_notification.json rename to elasticsearch/files/v2/es_template_notification.json diff --git a/elasticsearch/files/logging.yml b/elasticsearch/files/v2/logging.yml similarity index 100% rename from elasticsearch/files/logging.yml rename to elasticsearch/files/v2/logging.yml diff --git a/elasticsearch/files/v5/elasticsearch b/elasticsearch/files/v5/elasticsearch new file mode 100644 index 0000000..1836246 --- /dev/null +++ b/elasticsearch/files/v5/elasticsearch @@ -0,0 +1,76 @@ +{%- from "elasticsearch/map.jinja" import server with context -%} +################################ +# Elasticsearch +################################ + +# Elasticsearch home directory +#ES_HOME=/usr/share/elasticsearch + +# Elasticsearch configuration directory +#CONF_DIR=/etc/elasticsearch + +# Elasticsearch data directory +#DATA_DIR=/var/lib/elasticsearch + +# Elasticsearch logs directory +#LOG_DIR=/var/log/elasticsearch + +# Elasticsearch PID directory +#PID_DIR=/var/run/elasticsearch + +# Heap size defaults to 256m min, 1g max +# Set ES_HEAP_SIZE to 50% of available RAM, but no more than 31g +#ES_HEAP_SIZE={{ server.get('heap', {}).get('size', grains.get('mem_total', 1024)/2/1024)|round(0, 'ceil')|int }}g + +# Heap new generation +#ES_HEAP_NEWSIZE= + +# Maximum direct memory +#ES_DIRECT_SIZE= + +# Additional Java OPTS +#ES_JAVA_OPTS= + +# Configure restart on package upgrade (true, every other setting will lead to not restarting) +#ES_RESTART_ON_UPGRADE=true + +# Path to the GC log file +#ES_GC_LOG_FILE=/var/log/elasticsearch/gc.log + +################################ +# Elasticsearch service +################################ + +# SysV init.d +# +# When executing the init script, this user will be used to run the elasticsearch service. +# The default value is 'elasticsearch' and is declared in the init.d file. +# Note that this setting is only used by the init script. If changed, make sure that +# the configured user can read and write into the data, work, plugins and log directories. +# For systemd service, the user is usually configured in file /usr/lib/systemd/system/elasticsearch.service +#ES_USER=elasticsearch +#ES_GROUP=elasticsearch + +# The number of seconds to wait before checking if Elasticsearch started successfully as a daemon process +ES_STARTUP_SLEEP_TIME=5 + +################################ +# System properties +################################ + +# Specifies the maximum file descriptor number that can be opened by this process +# When using Systemd, this setting is ignored and the LimitNOFILE defined in +# /usr/lib/systemd/system/elasticsearch.service takes precedence +MAX_OPEN_FILES=131070 + +# The maximum number of bytes of memory that may be locked into RAM +# Set to "unlimited" if you use the 'bootstrap.mlockall: true' option +# in elasticsearch.yml (ES_HEAP_SIZE must also be set). +# When using Systemd, the LimitMEMLOCK property must be set +# in /usr/lib/systemd/system/elasticsearch.service +MAX_LOCKED_MEMORY=unlimited + +# Maximum number of VMA (Virtual Memory Areas) a process can own +# When using Systemd, this setting is ignored and the 'vm.max_map_count' +# property is set at boot time in /usr/lib/sysctl.d/elasticsearch.conf +#MAX_MAP_COUNT=262144 diff --git a/elasticsearch/files/v5/elasticsearch.yml b/elasticsearch/files/v5/elasticsearch.yml new file mode 100644 index 0000000..ac1122f --- /dev/null +++ b/elasticsearch/files/v5/elasticsearch.yml @@ -0,0 +1,436 @@ +{%- from "elasticsearch/map.jinja" import server with context %} + +##################### Elasticsearch Configuration Example ##################### + +# This file contains an overview of various configuration settings, +# targeted at operations staff. Application developers should +# consult the guide at . +# +# The installation procedure is covered at +# . +# +# Elasticsearch comes with reasonable defaults for most settings, +# so you can try it out without bothering with configuration. +# +# Most of the time, these defaults are just fine for running a production +# cluster. If you're fine-tuning your cluster, or wondering about the +# effect of certain configuration option, please _do ask_ on the +# mailing list or IRC channel [http://elasticsearch.org/community]. + +# Any element in the configuration can be replaced with environment variables +# by placing them in ${...} notation. For example: +# +# node.rack: ${RACK_ENV_VAR} + +# For information on supported formats and syntax for the config file, see +# + + +################################### Cluster ################################### + +# Cluster name identifies your cluster for auto-discovery. If you're running +# multiple clusters on the same network, make sure you're using unique names. +# +# cluster.name: elasticsearch +{%- if server.get('cluster', {}).name is defined %} +cluster.name: {{ server.cluster.name }} +{% endif %} +#################################### Node ##################################### + +# Node names are generated dynamically on startup, so you're relieved +# from configuring them manually. You can tie this node to a specific name: +# +# node.name: "Franz Kafka" +node.name: {{ server.get('name', '${HOSTNAME}') }} + +# Every node can be configured to allow or deny being eligible as the master, +# and to allow or deny to store the data. +# +# Allow this node to be eligible as a master node (enabled by default): +# +node.master: {{ server.get('master', True)|lower }} +# +# Allow this node to store data (enabled by default): +# +node.data: {{ server.get('data', True)|lower }} + +# You can exploit these settings to design advanced cluster topologies. +# +# 1. You want this node to never become a master node, only to hold data. +# This will be the "workhorse" of your cluster. +# +# node.master: false +# node.data: true +# +# 2. You want this node to only serve as a master: to not store any data and +# to have free resources. This will be the "coordinator" of your cluster. +# +# node.master: true +# node.data: false +# +# 3. You want this node to be neither master nor data node, but +# to act as a "search load balancer" (fetching data from nodes, +# aggregating results, etc.) +# +# node.master: false +# node.data: false + +# Use the Cluster Health API [http://localhost:9200/_cluster/health], the +# Node Info API [http://localhost:9200/_nodes] or GUI tools +# such as , +# , +# and +# to inspect the cluster state. + +# A node can have generic attributes associated with it, which can later be used +# for customized shard allocation filtering, or allocation awareness. An attribute +# is a simple key value pair, similar to node.key: value, here is an example: +# +# node.rack: rack314 +{%- if server.rack is defined %} +node.rack: {{ server.rack }} +{%- endif %} + +# By default, multiple nodes are allowed to start from the same installation location +# to disable it, set the following: +# node.max_local_storage_nodes: 1 + +{%- if server.get('threadpool', {}).get('bulk', {}).queue_size is defined %} +# For bulk operations. Thread pool type is fixed with a size of # of available processors. +thread_pool.bulk.queue_size: {{ server.threadpool.bulk.queue_size }} +{%- endif %} + +#################################### Index #################################### + +# You can set a number of options (such as shard/replica options, mapping +# or analyzer definitions, translog settings, ...) for indices globally, +# in this file. +# +# Note, that it makes more sense to configure index settings specifically for +# a certain index, either when creating it or by using the index templates API. +# +# See and +# +# for more information. + +# Set the number of shards (splits) of an index (5 by default): +# +#index.number_of_shards: {{ server.get('index', {}).get('shards', 5) }} + +# Set the number of replicas (additional copies) of an index (1 by default): +# +#index.number_of_replicas: {{ server.get('index', {}).get('replicas', 1) }} + +# Note, that for development on a local machine, with small indices, it usually +# makes sense to "disable" the distributed features: +# +# index.number_of_shards: 1 +# index.number_of_replicas: 0 + +# These settings directly affect the performance of index and search operations +# in your cluster. Assuming you have enough machines to hold shards and +# replicas, the rule of thumb is: +# +# 1. Having more *shards* enhances the _indexing_ performance and allows to +# _distribute_ a big index across machines. +# 2. Having more *replicas* enhances the _search_ performance and improves the +# cluster _availability_. +# +# The "number_of_shards" is a one-time setting for an index. +# +# The "number_of_replicas" can be increased or decreased anytime, +# by using the Index Update Settings API. +# +# Elasticsearch takes care about load balancing, relocating, gathering the +# results from nodes, etc. Experiment with different settings to fine-tune +# your setup. + +# Use the Index Status API () to inspect +# the index status. + + +#################################### Paths #################################### + +# Path to directory containing configuration (this file and log4j2.properties): +# +# path.conf: /path/to/conf + +# Path to directory where to store index data allocated for this node. +# +# path.data: /path/to/data +{%- if server.get('path', {}).data is defined %} +path.data: {{ server.path.data }} +{%- endif %} +# +# Can optionally include more than one location, causing data to be striped across +# the locations (a la RAID 0) on a file level, favouring locations with most free +# space on creation. For example: +# +# path.data: /path/to/data1,/path/to/data2 + +# Path to temporary files: +# +# path.work: /path/to/work + +# Path to log files: +# +# path.logs: /path/to/logs +{%- if server.get('path', {}).logs is defined %} +path.logs = {{ server.path.logs }} +{%- endif %} + +# Path to where plugins are installed: +# +# path.plugins: /path/to/plugins +# +{%- if server.snapshot is defined %} +path.repo: + {%- for repo_name, repo in server.snapshot.iteritems() %} + - {{ repo.path }} + {%- endfor %} +{%- endif %} + + +#################################### Plugin ################################### + +# If a plugin listed here is not installed for current node, the node will not start. +# +# plugin.mandatory: mapper-attachments,lang-groovy + + +################################### Memory #################################### + +# Elasticsearch performs poorly when JVM starts swapping: you should ensure that +# it _never_ swaps. +# +# Set this property to true to lock the memory: +# +# bootstrap.mlockall: true +{%- if server.mlockall is defined %} +bootstrap.memory_lock: {{ server.mlockall|lower }} +{%- endif %} + +# Make sure that the ES_MIN_MEM and ES_MAX_MEM environment variables are set +# to the same value, and that the machine has enough memory to allocate +# for Elasticsearch, leaving enough memory for the operating system itself. +# +# You should also make sure that the Elasticsearch process is allowed to lock +# the memory, eg. by using `ulimit -l unlimited`. + + +############################## Network And HTTP ############################### + +# Elasticsearch, by default, binds itself to the 0.0.0.0 address, and listens +# on port [9200-9300] for HTTP traffic and on port [9300-9400] for node-to-node +# communication. (the range means that if the port is busy, it will automatically +# try the next port). + +# Set both 'bind_host' and 'publish_host': +# +# network.host: 192.168.0.1 + +{%- if server.get('bind', {}).address is defined %} +network.host: {{ server.bind.address }} +{%- endif %} + +# Set specifically the address other nodes will use to communicate with this +# node. If not set, it is automatically derived. It must point to an actual +# IP address. +{%- if server.publish_host is defined %} +network.publish_host: {{ server.publish_host }} +{%- endif %} + + +# Set a custom port for the node to node communication (9300 by default): +# +# transport.tcp.port: 9300 + +# Enable compression for all communication between nodes (disabled by default): +# +# transport.tcp.compress: true + +# Set a custom port to listen for HTTP traffic: +# +# http.port: 9200 +{%- if server.get('bind', {}).port is defined %} +http.port: {{ server.bind.port }} +{%- endif %} + +# Set a custom allowed content length: +# +# http.max_content_length: 100mb + +# Enable or disable cross-origin resource sharing +{%- if server.get('cors', {}).enabled is defined %} +http.cors.enabled: {{ server.cors.enabled|lower }} +{%- endif %} + +# Which origins to allow. +{%- if server.get('cors', {}).allow_origin is defined %} +http.cors.allow-origin: {{ server.cors.allow_origin }} +{%- endif %} + +# Disable HTTP completely: +# +# http.enabled: false +http.enabled: true + + +################################### Gateway ################################### + +# The gateway allows for persisting the cluster state between full cluster +# restarts. Every change to the state (such as adding an index) will be stored +# in the gateway, and when the cluster starts up for the first time, +# it will read its state from the gateway. + +# There are several types of gateway implementations. For more information, see +# . + +# The default gateway type is the "local" gateway (recommended): +# +# gateway.type: local + +# Settings below control how and when to start the initial recovery process on +# a full cluster restart (to reuse as much local data as possible when using shared +# gateway). + +# Allow recovery process after N nodes in a cluster are up: +# +# gateway.recover_after_nodes: 1 +{%- if server.get('gateway', {}).recover_after_nodes is defined %} +gateway.recover_after_nodes: {{ server.gateway.recover_after_nodes }} +{%- endif %} + +# Set the timeout to initiate the recovery process, once the N nodes +# from previous setting are up (accepts time value): +# +# gateway.recover_after_time: 5m +{%- if server.get('gateway', {}).recover_after_time is defined %} +gateway.recover_after_time: {{ server.gateway.recover_after_time }} +{%- endif %} + +# Set how many nodes are expected in this cluster. Once these N nodes +# are up (and recover_after_nodes is met), begin recovery process immediately +# (without waiting for recover_after_time to expire): +# +# gateway.expected_nodes: 2 +{%- if server.get('gateway', {}).expected_nodes is defined %} +gateway.expected_nodes: {{ server.gateway.expected_nodes }} +{%- endif %} + + +############################# Recovery Throttling ############################# + +# These settings allow to control the process of shards allocation between +# nodes during initial recovery, replica allocation, rebalancing, +# or when adding and removing nodes. + +# Set the number of concurrent recoveries happening on a node: +# +# 1. During the initial recovery +# +# cluster.routing.allocation.node_initial_primaries_recoveries: 4 +# +# 2. During adding/removing nodes, rebalancing, etc +# +# cluster.routing.allocation.node_concurrent_recoveries: 2 + +# Set to throttle throughput when recovering (eg. 100mb, by default 20mb): +# +# indices.recovery.max_bytes_per_sec: 20mb + +# Set to limit the number of open concurrent streams when +# recovering a shard from a peer: +# +# indices.recovery.concurrent_streams: 5 + + +################################## Discovery ################################## + +# Discovery infrastructure ensures nodes can be found within a cluster +# and master node is elected. Multicast discovery is the default. + +# Set to ensure a node sees N other master eligible nodes to be considered +# operational within the cluster. Its recommended to set it to a higher value +# than 1 when running more than 2 nodes in the cluster. +# +discovery.zen.minimum_master_nodes: {{ server.get('cluster', {}).minimum_master_nodes|default(1) }} + +# Set the time to wait for ping responses from other nodes when discovering. +# Set this option to a higher value on a slow or congested network +# to minimize discovery failures: +# +# discovery.zen.ping.timeout: 3s + +# For more information, see +# + +# Unicast discovery allows to explicitly control which nodes will be used +# to discover the cluster. It can be used when multicast is not present, +# or to restrict the cluster communication-wise. +# +# 1. Disable multicast discovery (enabled by default): +# +#discovery.zen.ping.multicast.enabled: {{ server.get('cluster', {}).get('multicast', True)|lower }} +# +# 2. Configure an initial list of master nodes in the cluster +# to perform discovery when new nodes (master or data) are started: +# +{%- if server.get('cluster', {}).members is defined %} +discovery.zen.ping.unicast.hosts: [{% for member in server.cluster.members %}"{{ member.host }}:{{ member.get('port', 9300) }}"{% if not loop.last %}, {% endif %}{% endfor %}] +{%- endif %} + +# EC2 discovery allows to use AWS EC2 API in order to perform discovery. +# +# You have to install the cloud-aws plugin for enabling the EC2 discovery. +# +# For more information, see +# +# +# See +# for a step-by-step tutorial. + +# GCE discovery allows to use Google Compute Engine API in order to perform discovery. +# +# You have to install the cloud-gce plugin for enabling the GCE discovery. +# +# For more information, see . + +# Azure discovery allows to use Azure API in order to perform discovery. +# +# You have to install the cloud-azure plugin for enabling the Azure discovery. +# +# For more information, see . + +################################## Slow Log ################################## + +# Shard level query and fetch threshold logging. + +#index.search.slowlog.threshold.query.warn: 10s +#index.search.slowlog.threshold.query.info: 5s +#index.search.slowlog.threshold.query.debug: 2s +#index.search.slowlog.threshold.query.trace: 500ms + +#index.search.slowlog.threshold.fetch.warn: 1s +#index.search.slowlog.threshold.fetch.info: 800ms +#index.search.slowlog.threshold.fetch.debug: 500ms +#index.search.slowlog.threshold.fetch.trace: 200ms + +#index.indexing.slowlog.threshold.index.warn: 10s +#index.indexing.slowlog.threshold.index.info: 5s +#index.indexing.slowlog.threshold.index.debug: 2s +#index.indexing.slowlog.threshold.index.trace: 500ms + +################################## GC Logging ################################ + +#monitor.jvm.gc.young.warn: 1000ms +#monitor.jvm.gc.young.info: 700ms +#monitor.jvm.gc.young.debug: 400ms + +#monitor.jvm.gc.old.warn: 10s +#monitor.jvm.gc.old.info: 5s +#monitor.jvm.gc.old.debug: 2s + +{%- if server.script is mapping %} +script: {{ server.script|yaml }} +{%- endif %} diff --git a/elasticsearch/files/v5/es_template_audit.json b/elasticsearch/files/v5/es_template_audit.json new file mode 100644 index 0000000..f4579a9 --- /dev/null +++ b/elasticsearch/files/v5/es_template_audit.json @@ -0,0 +1,125 @@ +{%- from "elasticsearch/map.jinja" import server with context %} +{ + "settings" : { + "number_of_shards" : {{ server.get('index', {}).get('shards', 5) }}, + "number_of_replicas" : {{ server.get('index', {}).get('replicas', 1) }} + }, + "mappings": { + "message": { + "properties": { + "Payload": { + "type": "text" + }, + "Logger": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Hostname": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Pid": { + "index": "not_analyzed", + "type": "long" + }, + "Severity": { + "index": "not_analyzed", + "type": "long" + }, + "Type": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "severity_label": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "environment_label": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "region": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "action": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "event_type": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "outcome": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "notification_type": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } + }, + "template": "audit-*" +} diff --git a/elasticsearch/files/v5/es_template_kibana.json b/elasticsearch/files/v5/es_template_kibana.json new file mode 100644 index 0000000..c7438d9 --- /dev/null +++ b/elasticsearch/files/v5/es_template_kibana.json @@ -0,0 +1,295 @@ +{%- from "elasticsearch/map.jinja" import server with context %} +{ + "settings" : { + "number_of_shards" : {{ server.get('index', {}).get('shards', 5) }}, + "number_of_replicas" : {{ server.get('index', {}).get('replicas', 1) }} + }, + "mappings" : { + "index-pattern" : { + "properties" : { + "fieldFormatMap" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "fields" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "intervalName" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "notExpandable" : { + "type" : "boolean" + }, + "timeFieldName" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "title" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "config" : { + "properties" : { + "buildNum" : { + "index" : "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "search" : { + "properties" : { + "columns" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "description" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "hits" : { + "type" : "integer" + }, + "kibanaSavedObjectMeta" : { + "properties" : { + "searchSourceJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "sort" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "title" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "version" : { + "type" : "integer" + } + } + }, + "visualization" : { + "properties" : { + "description" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "kibanaSavedObjectMeta" : { + "properties" : { + "searchSourceJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "savedSearchId" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "title" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "uiStateJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "version" : { + "type" : "integer" + }, + "visState" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "dashboard" : { + "properties" : { + "description" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "hits" : { + "type" : "integer" + }, + "kibanaSavedObjectMeta" : { + "properties" : { + "searchSourceJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "optionsJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "panelsJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "timeFrom" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + }} + }, + "timeRestore" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "timeTo" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "title" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "uiStateJSON" : { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "version" : { + "type" : "integer" + } + } + } + }, + "template": ".kibana" +} + diff --git a/elasticsearch/files/v5/es_template_log.json b/elasticsearch/files/v5/es_template_log.json new file mode 100644 index 0000000..5e5e2e0 --- /dev/null +++ b/elasticsearch/files/v5/es_template_log.json @@ -0,0 +1,228 @@ +{%- from "elasticsearch/map.jinja" import server with context %} +{ + "settings" : { + "number_of_shards" : {{ server.get('index', {}).get('shards', 5) }}, + "number_of_replicas" : {{ server.get('index', {}).get('replicas', 1) }} + }, + "mappings": { + "message": { + "properties": { + "Logger": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Hostname": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Pid": { + "index": "not_analyzed", + "type": "long" + }, + "Severity": { + "index": "not_analyzed", + "type": "long" + }, + "Type": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "programname": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "python_module": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "severity_label": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "environment_label": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "region": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "request_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "tenant_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "user_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "instance_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "http_response_time": { + "type": "float" + }, + "http_status": { + "type": "integer" + }, + "http_method": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "http_url": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "http_client_ip_address": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "remote_addr": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "user_agent_browser": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "http_referer": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "user_agent_os": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "http_version": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } + }, + "template": "log-*" +} diff --git a/elasticsearch/files/v5/es_template_notification.json b/elasticsearch/files/v5/es_template_notification.json new file mode 100644 index 0000000..c19c7b9 --- /dev/null +++ b/elasticsearch/files/v5/es_template_notification.json @@ -0,0 +1,163 @@ +{%- from "elasticsearch/map.jinja" import server with context %} +{ + "settings" : { + "number_of_shards" : {{ server.get('index', {}).get('shards', 5) }}, + "number_of_replicas" : {{ server.get('index', {}).get('replicas', 1) }} + }, + "mappings": { + "message": { + "properties": { + "event_type": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Payload": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Logger": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Hostname": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "hostname": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "Pid": { + "index": "not_analyzed", + "type": "long" + }, + "Severity": { + "index": "not_analyzed", + "type": "long" + }, + "Timestamp": { + "type": "date", + "format": "dateOptionalTime" + }, + "Type": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "severity_label": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "environment_label": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "region": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "request_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "tenant_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "user_id": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "launched_at": { + "type": "date", + "format": "dateOptionalTime" + }, + "created_at": { + "type": "date", + "format": "dateOptionalTime" + }, + "publisher": { + "index": "not_analyzed", + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } + }, + "template": "notification-*" +} diff --git a/elasticsearch/files/v5/jvm.options b/elasticsearch/files/v5/jvm.options new file mode 100644 index 0000000..f0dd096 --- /dev/null +++ b/elasticsearch/files/v5/jvm.options @@ -0,0 +1,112 @@ +{%- from "elasticsearch/map.jinja" import server with context -%} +## JVM configuration + +################################################################ +## IMPORTANT: JVM heap size +################################################################ +## +## You should always set the min and max JVM heap +## size to the same value. For example, to set +## the heap to 4 GB, set: +## +## -Xms4g +## -Xmx4g +## +## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html +## for more information +## +################################################################ + +# Xms represents the initial size of total heap space +# Xmx represents the maximum size of total heap space + +-Xms{{ server.get('heap', {}).get('size', grains.get('mem_total', 1024)/2/1024)|round(0, 'ceil')|int }}g +-Xmx{{ server.get('heap', {}).get('size', grains.get('mem_total', 1024)/2/1024)|round(0, 'ceil')|int }}g + +################################################################ +## Expert settings +################################################################ +## +## All settings below this section are considered +## expert settings. Don't tamper with them unless +## you understand what you are doing +## +################################################################ + +## GC configuration +-XX:+UseConcMarkSweepGC +-XX:CMSInitiatingOccupancyFraction=75 +-XX:+UseCMSInitiatingOccupancyOnly + +## optimizations + +# pre-touch memory pages used by the JVM during initialization +-XX:+AlwaysPreTouch + +## basic + +# force the server VM (remove on 32-bit client JVMs) +-server + +# explicitly set the stack size (reduce to 320k on 32-bit client JVMs) +-Xss1m + +# set to headless, just in case +-Djava.awt.headless=true + +# ensure UTF-8 encoding by default (e.g. filenames) +-Dfile.encoding=UTF-8 + +# use our provided JNA always versus the system one +-Djna.nosys=true + +# use old-style file permissions on JDK9 +-Djdk.io.permissionsUseCanonicalPath=true + +# flags to configure Netty +-Dio.netty.noUnsafe=true +-Dio.netty.noKeySetOptimization=true +-Dio.netty.recycler.maxCapacityPerThread=0 + +# log4j 2 +-Dlog4j.shutdownHookEnabled=false +-Dlog4j2.disable.jmx=true +-Dlog4j.skipJansi=true + +## heap dumps + +# generate a heap dump when an allocation from the Java heap fails +# heap dumps are created in the working directory of the JVM +-XX:+HeapDumpOnOutOfMemoryError + +# specify an alternative path for heap dumps +# ensure the directory exists and has sufficient space +#-XX:HeapDumpPath=${heap.dump.path} + +## GC logging + +#-XX:+PrintGCDetails +#-XX:+PrintGCTimeStamps +#-XX:+PrintGCDateStamps +#-XX:+PrintClassHistogram +#-XX:+PrintTenuringDistribution +#-XX:+PrintGCApplicationStoppedTime + +# log GC status to a file with time stamps +# ensure the directory exists +#-Xloggc:${loggc} + +# By default, the GC log file will not rotate. +# By uncommenting the lines below, the GC log file +# will be rotated every 128MB at most 32 times. +#-XX:+UseGCLogFileRotation +#-XX:NumberOfGCLogFiles=32 +#-XX:GCLogFileSize=128M + +# Elasticsearch 5.0.0 will throw an exception on unquoted field names in JSON. +# If documents were already indexed with unquoted fields in a previous version +# of Elasticsearch, some operations may throw errors. +# +# WARNING: This option will be removed in Elasticsearch 6.0.0 and is provided +# only for migration purposes. +#-Delasticsearch.json.allow_unquoted_field_names=true diff --git a/elasticsearch/files/v5/log4j2.properties b/elasticsearch/files/v5/log4j2.properties new file mode 100644 index 0000000..16aee8d --- /dev/null +++ b/elasticsearch/files/v5/log4j2.properties @@ -0,0 +1,74 @@ +status = error + +# log action execution errors for easier debugging +logger.action.name = org.elasticsearch.action +logger.action.level = debug + +appender.console.type = Console +appender.console.name = console +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n + +appender.rolling.type = RollingFile +appender.rolling.name = rolling +appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log +appender.rolling.layout.type = PatternLayout +appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%.-10000m%n +appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}.log +appender.rolling.policies.type = Policies +appender.rolling.policies.time.type = TimeBasedTriggeringPolicy +appender.rolling.policies.time.interval = 1 +appender.rolling.policies.time.modulate = true + +rootLogger.level = info +rootLogger.appenderRef.console.ref = console +rootLogger.appenderRef.rolling.ref = rolling + +appender.deprecation_rolling.type = RollingFile +appender.deprecation_rolling.name = deprecation_rolling +appender.deprecation_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_deprecation.log +appender.deprecation_rolling.layout.type = PatternLayout +appender.deprecation_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%.-10000m%n +appender.deprecation_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_deprecation-%i.log.gz +appender.deprecation_rolling.policies.type = Policies +appender.deprecation_rolling.policies.size.type = SizeBasedTriggeringPolicy +appender.deprecation_rolling.policies.size.size = 1GB +appender.deprecation_rolling.strategy.type = DefaultRolloverStrategy +appender.deprecation_rolling.strategy.max = 4 + +logger.deprecation.name = org.elasticsearch.deprecation +logger.deprecation.level = INFO +logger.deprecation.appenderRef.deprecation_rolling.ref = deprecation_rolling +logger.deprecation.additivity = false + +appender.index_search_slowlog_rolling.type = RollingFile +appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling +appender.index_search_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog.log +appender.index_search_slowlog_rolling.layout.type = PatternLayout +appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %marker%.-10000m%n +appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog-%d{yyyy-MM-dd}.log +appender.index_search_slowlog_rolling.policies.type = Policies +appender.index_search_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy +appender.index_search_slowlog_rolling.policies.time.interval = 1 +appender.index_search_slowlog_rolling.policies.time.modulate = true + +logger.index_search_slowlog_rolling.name = index.search.slowlog +logger.index_search_slowlog_rolling.level = trace +logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling +logger.index_search_slowlog_rolling.additivity = false + +appender.index_indexing_slowlog_rolling.type = RollingFile +appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling +appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog.log +appender.index_indexing_slowlog_rolling.layout.type = PatternLayout +appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %marker%.-10000m%n +appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog-%d{yyyy-MM-dd}.log +appender.index_indexing_slowlog_rolling.policies.type = Policies +appender.index_indexing_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy +appender.index_indexing_slowlog_rolling.policies.time.interval = 1 +appender.index_indexing_slowlog_rolling.policies.time.modulate = true + +logger.index_indexing_slowlog.name = index.indexing.slowlog.index +logger.index_indexing_slowlog.level = trace +logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling +logger.index_indexing_slowlog.additivity = false diff --git a/elasticsearch/map.jinja b/elasticsearch/map.jinja index 94f12fa..b69b369 100644 --- a/elasticsearch/map.jinja +++ b/elasticsearch/map.jinja @@ -15,9 +15,11 @@ RedHat: - python-elasticsearch-curator service: elasticsearch version: '1.4.4' +default: + version: 2 {%- endload %} -{%- set server = salt['grains.filter_by'](base_defaults, merge=salt['pillar.get']('elasticsearch:server')) %} +{%- set server = salt['grains.filter_by'](base_defaults, merge=salt['pillar.get']('elasticsearch:server'), base='default') %} {%- load_yaml as client_defaults %} Debian: diff --git a/elasticsearch/server/init.sls b/elasticsearch/server/init.sls index 5206bb6..ee984cb 100644 --- a/elasticsearch/server/init.sls +++ b/elasticsearch/server/init.sls @@ -13,7 +13,7 @@ elasticsearch_packages: elasticsearch_default: file.managed: - name: /etc/default/elasticsearch - - source: salt://elasticsearch/files/elasticsearch + - source: salt://elasticsearch/files/v{{ server.version }}/elasticsearch - template: jinja - require: - pkg: elasticsearch_packages @@ -21,18 +21,58 @@ elasticsearch_default: elasticsearch_config: file.managed: - name: /etc/elasticsearch/elasticsearch.yml - - source: salt://elasticsearch/files/elasticsearch.yml + - source: salt://elasticsearch/files/v{{ server.version }}/elasticsearch.yml - template: jinja - require: - pkg: elasticsearch_packages +{%- if server.version == 2 %} elasticsearch_logging: file.managed: - name: /etc/elasticsearch/logging.yml - - source: salt://elasticsearch/files/logging.yml + - source: salt://elasticsearch/files/v2/logging.yml - template: jinja - require: - pkg: elasticsearch_packages +{%- endif %} + +{%- if server.version == 5 %} +elasticsearch_logging: + file.managed: + - name: /etc/elasticsearch/log4j2.properties + - source: salt://elasticsearch/files/v5/log4j2.properties + - template: jinja + - require: + - pkg: elasticsearch_packages + +elasticsearch_jvm_options: + file.managed: + - name: /etc/elasticsearch/jvm.options + - source: salt://elasticsearch/files/v5/jvm.options + - template: jinja + - require: + - pkg: elasticsearch_packages + +{%- if grains.get('init') == 'systemd' %} +elasticsearch_override_limit_memlock_file: + file.managed: + - name: /etc/systemd/system/elasticsearch.service.d/override.conf + - makedirs: True + - contents: | + [Service] + LimitMEMLOCK=infinity + - require: + - pkg: elasticsearch_packages + - watch_in: + - module: elasticsearch_restart_systemd + +elasticsearch_restart_systemd: + module.wait: + - name: service.systemctl_reload + - watch_in: + - service: elasticsearch_service +{%- endif %} +{%- endif %} {%- if server.get('log', {}).logrotate|default(True) and not salt['file.file_exists' ]('/etc/logrotate.d/elasticsearch') %} diff --git a/metadata/service/client.yml b/metadata/service/client.yml index 701dc35..203c763 100644 --- a/metadata/service/client.yml +++ b/metadata/service/client.yml @@ -1,19 +1,24 @@ applications: - elasticsearch parameters: + _param: + elasticsearch_version: 2 elasticsearch: client: enabled: true index: log: + force_operation: true enabled: true - template: elasticsearch/files/es_template_log.json + template: elasticsearch/files/v${_param:elasticsearch_version}/es_template_log.json audit: + force_operation: true enabled: true - template: elasticsearch/files/es_template_audit.json + template: elasticsearch/files/v${_param:elasticsearch_version}/es_template_audit.json notification: + force_operation: true enabled: true - template: elasticsearch/files/es_template_notification.json - kibana4: + template: elasticsearch/files/v${_param:elasticsearch_version}/es_template_notification.json + kibana: enabled: true - template: elasticsearch/files/es_template_kibana4.json + template: elasticsearch/files/v${_param:elasticsearch_version}/es_template_kibana.json diff --git a/metadata/service/server/cluster.yml b/metadata/service/server/cluster.yml index e432f74..2ff8db5 100644 --- a/metadata/service/server/cluster.yml +++ b/metadata/service/server/cluster.yml @@ -3,9 +3,12 @@ applications: classes: - service.elasticsearch.support parameters: + _param: + elasticsearch_version: 2 elasticsearch: server: enabled: true + version: ${_param:elasticsearch_version} bind: address: 0.0.0.0 port: 9200 diff --git a/metadata/service/server/local.yml b/metadata/service/server/local.yml index 259f468..24f577e 100644 --- a/metadata/service/server/local.yml +++ b/metadata/service/server/local.yml @@ -3,9 +3,12 @@ applications: classes: - service.elasticsearch.support parameters: + _param: + elasticsearch_version: 2 elasticsearch: server: enabled: true + version: ${_param:elasticsearch_version} bind: address: 127.0.0.1 port: 9200 diff --git a/metadata/service/server/single.yml b/metadata/service/server/single.yml index 264186c..397a0b6 100644 --- a/metadata/service/server/single.yml +++ b/metadata/service/server/single.yml @@ -3,9 +3,12 @@ applications: classes: - service.elasticsearch.support parameters: + _param: + elasticsearch_version: 2 elasticsearch: server: enabled: true + version: ${_param:elasticsearch_version} bind: address: 0.0.0.0 port: 9200 diff --git a/tests/pillar/cluster.sls b/tests/pillar/cluster.sls index 316438e..18a0194 100644 --- a/tests/pillar/cluster.sls +++ b/tests/pillar/cluster.sls @@ -15,4 +15,5 @@ elasticsearch: port: 9300 index: shards: 5 - replicas: 1 \ No newline at end of file + replicas: 1 + version: 2 \ No newline at end of file diff --git a/tests/pillar/curator.sls b/tests/pillar/curator.sls index f4b8158..7425a81 100644 --- a/tests/pillar/curator.sls +++ b/tests/pillar/curator.sls @@ -4,6 +4,7 @@ elasticsearch: bind: address: 0.0.0.0 port: 9200 + version: 2 curator: timeout: 900 logfile: /var/log/elasticsearch/curator.log diff --git a/tests/pillar/single.sls b/tests/pillar/single.sls index c4f54e0..eec8541 100644 --- a/tests/pillar/single.sls +++ b/tests/pillar/single.sls @@ -9,3 +9,4 @@ elasticsearch: index: shards: 1 replicas: 0 + version: 2 -- 2.32.7