Install elasticsearch package.
This role requires Ansible 2.1 or higher, and platform requirements are listed in the metadata file.
This role has some testing methods:
Tests runs automatically on Travis on push, release, pr, ... using docker testing containers
You can use Docker to run tests on ephemeral containers.
make test-docker
You can use Vagrant to run tests on virtual machines.
make test-vagrant
# 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 }}"
# Debian
elasticsearch_packages :
- elasticsearch
elasticsearch_service_name: elasticsearch
- role: infOpen.openjdk-jre
openjdk_jre_version: 8
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 }
MIT
Alexandre Chaussier (for Infopen company)
- http://www.infopen.pro
- a.chaussier [at] infopen.pro