infOpen.elasticsearch
elasticsearch
Install elasticsearch package.
Requirements
This role requires Ansible 2.1 or higher, and platform requirements are listed in the metadata file.
Testing
This role has some testing methods:
Automatically with Travis
Tests runs automatically on Travis on push, release, pr, ... using docker testing containers
Locally with Docker
You can use Docker to run tests on ephemeral containers.
make test-docker
Locally with Vagrant
You can use Vagrant to run tests on virtual machines.
make test-vagrant
Role Variables
Defaults variables
# Package variables
#------------------
elasticsearch_package_state: 'latest'
# Service variables
#------------------
elasticsearch_service_state: 'started'
elasticsearch_service_enabled: True
elasticsearch_apt_cache_valid_time: 3600
# Elacticsearch default version
elasticsearch_version: '2.3'
# Elasticsearch config files name
elasticsearch_main_file: 'elasticsearch.yml'
elasticsearch_logging_file: 'logging.yml'
elasticsearch_logrotate_file: 'logrotate.j2'
# User and group management
elasticsearch_user_name: 'elasticsearch'
elasticsearch_group_name: 'elasticsearch'
# Configuration files and folders properties
elasticsearch_etc_files_owner: "{{ elasticsearch_user_name }}"
elasticsearch_etc_files_group: "{{ elasticsearch_group_name }}"
elasticsearch_etc_files_mode: '0400'
elasticsearch_etc_folders_owner: "{{ elasticsearch_user_name }}"
elasticsearch_etc_folders_group: "{{ elasticsearch_group_name }}"
elasticsearch_etc_folders_mode: '0500'
# Data and logs folders properties
elasticsearch_data_folders_owner: "{{ elasticsearch_user_name }}"
elasticsearch_data_folders_group: "{{ elasticsearch_group_name }}"
elasticsearch_data_folders_mode: '0700'
elasticsearch_log_folders_owner: "{{ elasticsearch_user_name }}"
elasticsearch_log_folders_group: "{{ elasticsearch_group_name }}"
elasticsearch_log_folders_mode: '0700'
# Sysctl virtual memory setting
elasticsearch_sysctl_rules:
- name: 'vm.max_map_count'
value: 262144
state: 'present'
# Security limits rules
elasticsearch_limits_rules:
- 'elasticsearch soft memlock unlimited'
- 'elasticsearch hard memlock unlimited'
# Elasticsearch paths
elasticsearch_folders:
conf: '/etc/elasticsearch'
data:
- '/var/lib/elasticsearch'
home: '/usr/share/elasticsearch'
log: '/var/log/elasticsearch'
pid: '/var/run/elasticsearch'
work: '/tmp/elasticsearch'
# Default configuration file
#---------------------------
elasticsearch_etc_default_start_daemon: 'true'
elasticsearch_etc_default_heap_size: '1g'
elasticsearch_etc_default_heap_new_size: ''
elasticsearch_etc_default_direct_size: ''
elasticsearch_etc_default_max_open_files: 65536
elasticsearch_etc_default_max_locked_memory: 'unlimited'
elasticsearch_etc_default_max_map_count: 262144
elasticsearch_etc_default_log_dir: "{{ elasticsearch_folders.log }}"
elasticsearch_etc_default_data_dir: "{{ elasticsearch_folders.data }}"
elasticsearch_etc_default_work_dir: "{{ elasticsearch_folders.work }}"
elasticsearch_etc_default_conf_dir: "{{ elasticsearch_folders.conf }}"
elasticsearch_etc_default_conf_file: "{{ elasticsearch_folders.conf ~ '/elasticsearch.yml' }}"
elasticsearch_etc_default_java_opts: []
elasticsearch_etc_default_restart_on_upgrade: 'true'
# Main configuration file
#------------------------
# Cluster
elasticsearch_cluster_name: 'elasticsearch'
# Node
elasticsearch_node_name: "{{ ansible_hostname }}"
elasticsearch_custom_var: {}
# Paths
elasticsearch_path_data: "{{ elasticsearch_etc_default_data_dir }}"
elasticsearch_path_logs: "{{ elasticsearch_etc_default_log_dir }}"
# Memory
elasticsearch_bootstrap_mlockall: 'true'
# Network
elasticsearch_network_host: '127.0.0.1'
elasticsearch_http_port: 9200
# Discovery
elasticsearch_discovery_zen_minimum_master_nodes: 1
elasticsearch_discovery_zen_ping_unicast_hosts: []
# Gateway
elasticsearch_gateway_recover_after_nodes: 1
# Various
elasticsearch_various_node_max_local_storage_nodes: 1
elasticsearch_various_action_destructive_requires_name: 'true'
# Logging configuration file
#---------------------------
elasticsearch_logging:
es.logger.level: INFO
rootLogger: ${es.logger.level}, console, file
logger:
action: DEBUG
deprecation: INFO, deprecation_log_file
com.amazonaws: WARN
com.amazonaws.jmx.SdkMBeanRegistrySupport: ERROR
com.amazonaws.metrics.AwsSdkMetrics: ERROR
org.apache.http: INFO
index.search.slowlog: TRACE, index_search_slow_log_file
index.indexing.slowlog: TRACE, index_indexing_slow_log_file
additivity:
index.search.slowlog: false
index.indexing.slowlog: false
deprecation: false
appender:
console:
type: console
layout:
type: consolePattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
file:
type: file
file: ${path.logs}/${cluster.name}.log
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %.10000m%n"
deprecation_log_file:
type: file
file: ${path.logs}/${cluster.name}_deprecation.log
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
index_search_slow_log_file:
type: file
file: ${path.logs}/${cluster.name}_index_search_slowlog.log
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
index_indexing_slow_log_file:
type: file
file: ${path.logs}/${cluster.name}_index_indexing_slowlog.log
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
# Logrotate settings
#-------------------
elasticsearch_logrotate_rules:
- 'daily'
- 'dateext'
- 'dateformat _%Y-%m-%d'
- 'rotate 31'
- 'copytruncate'
- 'compress'
- 'delaycompress'
- 'missingok'
- "create 644 {{ elasticsearch_user_name }} {{ elasticsearch_group_name }}"
Specific OS family vars
# Debian
elasticsearch_packages :
- elasticsearch
elasticsearch_service_name: elasticsearch
Dependencies
- role: infOpen.openjdk-jre
openjdk_jre_version: 8
Example Playbook
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: infOpen.elasticsearch }
License
MIT
Author Information
Alexandre Chaussier (for Infopen company)
- http://www.infopen.pro
- a.chaussier [at] infopen.pro
Install
ansible-galaxy install infOpen.elasticsearchLicense
mit
Downloads
116
Owner
Infopen company
