0x0i.elasticsearch

ansible logo

elasticsearch logo

Ansible Role: Elasticsearch

Galaxy Role GitHub release (latest by date) License: MIT

Table of Contents

This Ansible role installs and configures Elasticsearch, which is a search and analytics engine that works in real-time.

Supported Platforms:
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu

Requirements

You need the unzip/gtar utility installed on the target machine. Check the ansible unarchive module notes for more details.

Role Variables

Variables are organized by the following stages of software and machine setup:

  • install
  • config
  • launch
  • uninstall

Install

You can install elasticsearch using operating system package managers (like apt or yum) or by using compressed files (.tar or .zip) that you download.

You can customize the following variables to control the installation process:

elasticsearch_user: <service-user-name> (default: elasticsearch)

  • This is the user and group for running elasticsearch safely.

install_type: <package | archive> (default: archive)

  • package: This uses the package managers of Debian and Redhat. It installs Elasticsearch from their repositories. The installation path is determined by the package manager.
  • archive: This allows you to install from compressed files (both tar and zip). You can get these files from the official download/releases site.

install_dir: </path/to/installation/dir> (default: /opt/elasticsearch)

  • The target path where elasticsearch binaries will be placed.

archive_url: <path-or-url-to-archive> (default: see defaults/main.yml)

  • The URL for the compressed archive containing elasticsearch binaries. You can find official versions here.

package_url: <path-or-url-to-package> (default: see defaults/main.yml)

  • The URL for a Debian or RPM package containing elasticsearch.

config_dir: </path/to/configuration/dir> (default: /opt/elasticsearch/config)

  • Path for configuration files.

Config

Configuration for elasticsearch is done through these files:

  • elasticsearch.yml: for general configuration.
  • jvm.options: for JVM settings.
  • log4j2.properties: for logging settings.

You can manage these files using the following variables:

managed_configs: <list of configs to manage> (default: see defaults/main.yml)

  • List of configuration files to manage.

config: <hash-of-elasticsearch-settings> default: {}

  • Settings specific to a node.

jvm_options: <list-of-dicts> default: []

  • To set JVM options, use the jvm.options file.

log4j_properties: <list-of-dicts> default: []

  • Settings for logging using Apache log4j 2.

Launch

To run the elasticsearch service, we use the systemd tool.

You can customize the service properties using:

extra_run_args: <elasticsearch-cli-options> (default: [])

  • Command-line arguments for running the service.

custom_unit_properties: <hash-of-systemd-service-settings> (default: [])

  • Customize systemd service unit properties.

Uninstall

You can uninstall and clean up the installation with:

perform_uninstall: <true | false> (default: false)

  • Set to true to uninstall and remove Elasticsearch.

Dependencies

  • 0x0i.systemd

Example Playbook

Basic example:

- hosts: all
  roles:
  - role: 0x0I.elasticsearch

Install a specific version of Elasticsearch using a package:

- hosts: legacy-ES-cluster
  roles:
  - role: 0x0I.elasticsearch
    vars:
        install_type: package
        package_url: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm

Provision a hybrid master/data node with custom paths:

- hosts: test-elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['elasticsearch_config']
        config:
          cluster.name: example-cluster
          node.master: true
          node.data: true
          path:
            data: /mnt/data/elasticsearch
            logs: /mnt/logs/elasticsearch

Adjust JVM settings and enable verbose logging:

- hosts: elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['jvm_options', 'log4j2_properties']
        jvm_options:
          - comment: adjust the min and max JVM heap size
            arguments:
              - '-Xms16g'
              - '-Xmx16g'
        log4j2_properties:
          - comment: log action execution errors
            settings:
              - logger.action.name: org.elasticsearch.action
                logger.action.level: debug

License

MIT

Author Information

This role was created in 2019 by O1.IO.

Informazioni sul progetto

Elasticsearch, a real-time distributed search and analytics engine

Installa
ansible-galaxy install 0x0i.elasticsearch
Licenza
Unknown
Download
459
Proprietario