From: Filip Pytloun Date: Wed, 29 Jun 2016 14:27:53 +0000 (+0200) Subject: Add support for curator X-Git-Tag: 2016.12~12 X-Git-Url: https://gerrit.mcp.mirantis.com/gitweb?p=salt-formulas%2Felasticsearch.git;a=commitdiff_plain;h=911588c0a9c69234b52e26a8c37cfc66e4e42762;ds=sidebyside Add support for curator --- diff --git a/README.rst b/README.rst index 0c7021f..7e9ccce 100644 --- a/README.rst +++ b/README.rst @@ -47,6 +47,78 @@ Cluster with manually defined members: shards: 5 replicas: 1 +Common definition for curator: + +.. code-block:: yaml + + elasticsearch: + server: + curator: + timeout: 900 + logfile: /var/log/elasticsearch/curator.log + logformat: json + actions: + - action: delete_indices + description: >- + Delete indices older than 45 days (based on index name). + Ignore the error if the filter does not result in an actionable + list of indices (ignore_empty_list) and exit cleanly. + options: + ignore_empty_list: True + continue_if_exception: False + disable_action: False + filters: + - filtertype: pattern + kind: regex + value: '.*\-\d\d\d\d\.\d\d\.\d\d$' + - filtertype: age + source: name + direction: older + timestring: '%Y.%m.%d' + unit: days + unit_count: 90 + - action: replicas + description: >- + Reduce the replica count to 0 for indices older than 30 days + (based on index creation_date) + options: + count: 0 + wait_for_completion: False + continue_if_exception: False + disable_action: False + filters: + - filtertype: pattern + kind: regex + value: '.*\-\d\d\d\d\.\d\d\.\d\d$' + - filtertype: age + source: creation_date + direction: older + unit: days + unit_count: 30 + - action: forcemerge + description: >- + forceMerge indices older than 2 days (based on index + creation_date) to 2 segments per shard. Delay 120 seconds + between each forceMerge operation to allow the cluster to + quiesce. + This action will ignore indices already forceMerged to the same + or fewer number of segments per shard, so the 'forcemerged' + filter is unneeded. + options: + max_num_segments: 2 + delay: 120 + continue_if_exception: False + disable_action: True + filters: + - filtertype: pattern + kind: regex + value: '.*\-\d\d\d\d\.\d\d\.\d\d$' + - filtertype: age + source: creation_date + direction: older + unit: days + unit_count: 2 + Read more ========= diff --git a/elasticsearch/files/curator.yml b/elasticsearch/files/curator.yml new file mode 100644 index 0000000..6bb8f1e --- /dev/null +++ b/elasticsearch/files/curator.yml @@ -0,0 +1,25 @@ +{%- from "elasticsearch/map.jinja" import server with context -%} +--- +# Remember, leave a key empty if there is no value. None will be a string, +# not a Python "NoneType" +client: + hosts: + - {% if server.bind.address == '0.0.0.0' %}127.0.0.1{% else %}{{ server.bind.address }}{% endif %} + port: {{ server.bind.port }} + url_prefix: + use_ssl: False + certificate: + client_cert: + client_key: + aws_key: + aws_secret_key: + aws_region: + ssl_no_validate: False + http_auth: + timeout: {{ server.curator.timeout|default(120) }} + master_only: False + +logging: + loglevel: {{ server.curator.loglevel|default("INFO") }} + logfile: {{ server.curator.logfile|default("") }} + logformat: {{ server.curator.logformat|default("default") }} diff --git a/elasticsearch/files/curator_actions.yml b/elasticsearch/files/curator_actions.yml new file mode 100644 index 0000000..8fafe1a --- /dev/null +++ b/elasticsearch/files/curator_actions.yml @@ -0,0 +1,7 @@ +{%- from "elasticsearch/map.jinja" import server with context -%} +--- +actions: + {%- for action in server.curator.actions %} + {{ loop.index }}: + {{ action|yaml }} + {%- endfor %} diff --git a/elasticsearch/map.jinja b/elasticsearch/map.jinja index 392295f..000a1f4 100644 --- a/elasticsearch/map.jinja +++ b/elasticsearch/map.jinja @@ -4,11 +4,15 @@ Debian: pkgs: - elasticsearch + curator_pkgs: + - python-elasticsearch-curator service: elasticsearch version: '1.4.4' RedHat: pkgs: - elasticsearch + curator_pkgs: + - python-elasticsearch-curator service: elasticsearch version: '1.4.4' {%- endload %} diff --git a/elasticsearch/server/curator.sls b/elasticsearch/server/curator.sls new file mode 100644 index 0000000..9cdfc13 --- /dev/null +++ b/elasticsearch/server/curator.sls @@ -0,0 +1,32 @@ +{%- from "elasticsearch/map.jinja" import server with context %} + +elasticsearch_curator_packages: + pkg.installed: + - names: {{ server.curator_pkgs }} + +elasticsearch_curator_config: + file.managed: + - name: /etc/elasticsearch/curator.yml + - source: salt://elasticsearch/files/curator.yml + - group: elasticsearch + - mode: 750 + - template: jinja + - require: + - pkg: elasticsearch_packages + +elasticsearch_curator_action_config: + file.managed: + - name: /etc/elasticsearch/curator_actions.yml + - source: salt://elasticsearch/files/curator_actions.yml + - group: elasticsearch + - mode: 750 + - template: jinja + - require: + - file: elasticsearch_curator_config + +elasticsearch_curator_cron: + cron.present: + - name: "curator --config /etc/elasticsearch/curator.yml /etc/elasticsearch/curator_actions.yml >/dev/null" + - user: elasticsearch + - minute: random + - hour: 1 diff --git a/elasticsearch/server.sls b/elasticsearch/server/init.sls similarity index 89% rename from elasticsearch/server.sls rename to elasticsearch/server/init.sls index ea392ad..36e9398 100644 --- a/elasticsearch/server.sls +++ b/elasticsearch/server/init.sls @@ -3,6 +3,9 @@ include: - java + {%- if server.curator is defined %} + - elasticsearch.server.curator + {%- endif %} elasticsearch_packages: pkg.installed: