Kevin Carter 6ebca3d78f
Correct cluster properties
When running a multi-node ELK stack (5+ nodes) the elasticsearch server
needs to be able to mark and identify nodes that will be data and master
nodes. This change ensures that the first set of available master nodes
is mark accordingly as both data and master and that all other nodes are
marked as cluster members with alternating nodes being marked as data
nodes. With this change the cluster will be able to grow as well as
handle large data sets more efficiently.

This change ensures that sharding is correctly started when the cluster
is deployed and that the beat services are using the recommended
sharding practices.

Change-Id: Id555132199f268b21aaa939a84760c744238dd2b
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
2018-05-02 17:25:53 -05:00

91 lines
2.5 KiB
YAML

---
- name: Install Elastic Search
hosts: "elastic-logstash"
become: true
vars_files:
- vars/variables.yml
tasks:
- name: Set half memory fact
set_fact:
h_mem: "{{ ansible_memtotal_mb // 2 }}"
- name: Set logstash facts
set_fact:
elastic_heap_size: "{{ ((h_mem | int) > 30720) | ternary(30720, h_mem) }}"
when:
- elastic_heap_size is undefined
- name: Configure systcl vm.max_map_count=262144 on container hosts
sysctl:
name: "vm.max_map_count"
value: "262144"
state: "present"
reload: "yes"
delegate_to: "{{ physical_host }}"
tags:
- sysctl
- name: Ensure mount directories exists
file:
path: "/openstack/{{ inventory_hostname }}/elasticsearch"
state: "directory"
delegate_to: "{{ physical_host }}"
- name: elasticsearch datapath bind mount
lxc_container:
name: "{{ inventory_hostname }}"
container_command: |
[[ ! -d "/var/lib/elasticsearch" ]] && mkdir -p "/var/lib/elasticsearch"
container_config:
- "lxc.mount.entry=/openstack/{{ inventory_hostname }}/elasticsearch var/lib/elasticsearch none bind 0 0"
delegate_to: "{{ physical_host }}"
when:
- physical_host != inventory_hostname
- container_tech | default('lxc') == 'lxc'
- name: Ensure Java is installed
apt:
name: openjdk-8-jre
state: present
install_recommends: yes
update_cache: yes
- include_tasks: common_task_install_elk_repo.yml
- name: Ensure Elastic search is installed
apt:
name: elasticsearch
state: present
update_cache: yes
- name: Drop elasticsearch conf file
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
with_items:
- src: templates/elasticsearch.yml.j2
dest: /etc/elasticsearch/elasticsearch.yml
- src: templates/jvm.options.j2
dest: /etc/elasticsearch/jvm.options
- src: templates/es-log4j2.properties.j2
dest: /etc/elasticsearch/log4j2.properties
tags:
- config
- name: Ensure elasticsearch ownership
file:
path: /var/lib/elasticsearch
owner: elasticsearch
group: elasticsearch
recurse: true
tags:
- config
- name: Enable and restart elastic
systemd:
name: "elasticsearch"
enabled: true
state: restarted
tags:
- config