OpenSibleOpenSible Stack Hub
← All blueprints

Elasticsearch HA (Docker cluster)

OSS

Production Elasticsearch cluster across N nodes running the official Elasticsearch Docker image. Each node runs one container managed by a dedicated systemd unit; cluster formation via discovery.seed_hosts and cluster.initial_master_nodes. Ships with a per-node HTTP health dashboard (green/yellow/red + shard summary).

by opensible· ⬇ 0 installs· Databases· v1.0.0· template elasticsearch-cluster

Use in the OpenSible console

Open Infrastructure → Stack Hub Blueprints, switch the source to Cloud hub, then pick Elasticsearch HA (Docker cluster) and press Use.

Requirements

  • ansible >=2.14

Default variables

defaults.json
{
  "nodes": [
    {
      "ip": "",
      "name": "es-1",
      "ssh_port": "",
      "ssh_user": ""
    },
    {
      "ip": "",
      "name": "es-2",
      "ssh_port": "",
      "ssh_user": ""
    },
    {
      "ip": "",
      "name": "es-3",
      "ssh_port": "",
      "ssh_user": ""
    }
  ],
  "become": true,
  "data_dir": "/var/lib/elasticsearch-data",
  "heap_size": "1g",
  "http_port": 9200,
  "cluster_id": "opensible-es",
  "es_version": "8.15.3",
  "announce_host": "{{ ansible_host | default(inventory_hostname) }}",
  "open_firewall": true,
  "transport_port": 9300,
  "elastic_password": "",
  "health_http_port": 9280,
  "security_enabled": false,
  "ssh_port_default": 22,
  "ssh_user_default": "root",
  "health_http_enabled": true
}

vars.example.yml

vars.example.yml
---
# Example variable overrides for the elasticsearch-cluster blueprint.
# Copy into your project and adjust before running the playbook.

cluster_id: opensible-es
es_version: "8.15.3"

# Networking
http_port: 9200
transport_port: 9300
announce_host: "{{ ansible_host | default(inventory_hostname) }}"

# Per-node HTTP health dashboard (HTML + /health.json + /live).
health_http_enabled: true
health_http_port: 9280

# X-Pack basic security. Turn on for anything reachable outside a
# trusted network; provide a strong password (ideally via ansible-vault).
security_enabled: false
elastic_password: ""

# JVM + storage
heap_size: 1g                 # -Xms/-Xmx; 50% of RAM, cap 31g
data_dir: /var/lib/elasticsearch-data

# Cluster members. First entry seeds the initial master set.
nodes:
  - { name: es-1, ip: 10.0.0.11, ssh_user: root, ssh_port: 22 }
  - { name: es-2, ip: 10.0.0.12, ssh_user: root, ssh_port: 22 }
  - { name: es-3, ip: 10.0.0.13, ssh_user: root, ssh_port: 22 }

open_firewall: true
become: true

Versions (1)

  • v1.0.0playbook.yml