Skip to content
This repository has been archived by the owner on Jan 21, 2023. It is now read-only.

Commit

Permalink
should fix #5
Browse files Browse the repository at this point in the history
  • Loading branch information
blacktop committed Mar 3, 2018
1 parent 5515f9e commit da9e072
Show file tree
Hide file tree
Showing 5 changed files with 158 additions and 220 deletions.
84 changes: 16 additions & 68 deletions 6.2/elastic-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,95 +2,43 @@

set -e

es_opts=''
umask 0002

declare -a es_opts

while IFS='=' read -r envvar_key envvar_value
do
# Elasticsearch env vars need to have at least two dot separated lowercase words, e.g. `cluster.name`
if [[ "$envvar_key" =~ ^[a-z]+\.[a-z]+ ]]
then
if [[ "$envvar_key" =~ ^[a-z0-9_]+\.[a-z0-9_]+ ]]; then
if [[ ! -z $envvar_value ]]; then
es_opt="-E${envvar_key}=${envvar_value}"
es_opts+=" ${es_opt}"
es_opts+=("${es_opt}")
fi
fi
done < <(env)

export ES_JAVA_OPTS="-Des.cgroups.hierarchy.override=/ $ES_JAVA_OPTS"

# Add elasticsearch as command if needed
if [ "${1:0:1}" = '-' ]; then
set -- elasticsearch "$@" ${es_opts}
fi

################################################
# = MASTER NODE = #
################################################
if [ "$1" = 'master' -a "$(id -u)" = '0' ]; then
# Change node into a data node
CONFIG=/usr/share/elasticsearch/config/elasticsearch.yml
sed -ri "s!^(\#\s*)?(node\.master:).*!\2 'true'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.ingest:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.data:).*!\2 'false'!" $CONFIG

# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs

set -- su-exec elasticsearch "$@" ${es_opts}
fi

################################################
# = INGEST NODE = #
################################################
if [ "$1" = 'ingest' -a "$(id -u)" = '0' ]; then
# Change node into a data node
CONFIG=/usr/share/elasticsearch/config/elasticsearch.yml
sed -ri "s!^(\#\s*)?(node\.master:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.ingest:).*!\2 'true'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.data:).*!\2 'false'!" $CONFIG
# Set master.node's name
if ! grep -q "discovery.zen.ping.unicast.hosts" $CONFIG; then
echo "discovery.zen.ping.unicast.hosts: [\"elastic-master\"]" >> $CONFIG
fi

# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs

set -- su-exec elasticsearch "$@" ${es_opts}
# Determine if x-pack is enabled
if bin/elasticsearch-plugin list -s | grep -q x-pack; then
if [[ -n "$ELASTIC_PASSWORD" ]]; then
[[ -f config/elasticsearch.keystore ]] || bin/elasticsearch-keystore create
echo "$ELASTIC_PASSWORD" | bin/elasticsearch-keystore add -x 'bootstrap.password'
fi
fi

################################################
# = DATA NODE = #
################################################
if [ "$1" = 'data' -a "$(id -u)" = '0' ]; then
# Change node into a data node
CONFIG=/usr/share/elasticsearch/config/elasticsearch.yml
sed -ri "s!^(\#\s*)?(node\.master:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.ingest:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.data:).*!\2 'true'!" $CONFIG
# Set master.node's name
if ! grep -q "discovery.zen.ping.unicast.hosts" $CONFIG; then
echo "discovery.zen.ping.unicast.hosts: [\"elastic-master\"]" >> $CONFIG
fi

# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs

set -- su-exec elasticsearch "$@" ${es_opts}

# Add elasticsearch as command if needed
if [ "${1:0:1}" = '-' ]; then
set -- elasticsearch "$@"
fi

# Drop root privileges if we are running elasticsearch
# allow the container to be started with `--user`
if [ "$1" = 'elasticsearch' -a "$(id -u)" = '0' ]; then
# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/{data,logs}

set -- su-exec elasticsearch "$@" ${es_opts}
set -- su-exec elasticsearch "$@" "${es_opts[@]}"
fi

exec "$@"
86 changes: 86 additions & 0 deletions docker-compose.x-pack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
version: "3"

services:
#############################
# ELASTICSEARCH MASTER NODE #
#############################
master:
restart: unless-stopped
image: blacktop/elasticsearch:x-pack
environment:
- ELASTIC_PASSWORD=pleasechangeme
- xpack.security.audit.enabled=true
- cluster.name=docker-cluster
- node.name=master-node
- node.master=true
- node.ingest=false
- node.data=false
volumes:
- data:/usr/share/elasticsearch/data
networks:
- elastic
####################################
# ELASTICSEARCH CLIENT/INGEST NODE #
####################################
ingest:
restart: unless-stopped
image: blacktop/elasticsearch:x-pack
environment:
- ELASTIC_PASSWORD=pleasechangeme
- xpack.security.audit.enabled=true
- cluster.name=docker-cluster
- node.name=ingest-node-1
- node.master=true
- node.ingest=true
- node.data=false
- discovery.zen.ping.unicast.hosts=master
ports:
- "9200:9200"
links:
- master:elastic-master
networks:
- elastic
###########################
# ELASTICSEARCH DATA NODE #
###########################
data:
restart: unless-stopped
image: blacktop/elasticsearch:x-pack
environment:
- ELASTIC_PASSWORD=pleasechangeme
- xpack.security.audit.enabled=true
- ES_JAVA_OPTS=-Xms2g -Xmx2g
- cluster.name=docker-cluster
- node.name=data-node-1
- node.master=false
- node.ingest=false
- node.data=true
- discovery.zen.ping.unicast.hosts=master
links:
- master:elastic-master
# volumes:
# - data:/usr/share/elasticsearch/data
networks:
- elastic
###############
# KIBANA NODE #
###############
kibana:
image: blacktop/kibana:x-pack
ports:
- "80:5601"
links:
- ingest:elasticsearch
networks:
- elastic
#############################
# ELASTICSEARCH DATA VOLUME #
#############################
volumes:
data:
################################
# ELASTICSEARCH BRIDGE NETWORK #
################################
networks:
elastic:
driver: bridge
32 changes: 24 additions & 8 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
version: "2"
version: "3"

services:
#############################
# ELASTICSEARCH MASTER NODE #
#############################
master:
restart: unless-stopped
image: blacktop/elasticsearch:x-pack
command: master
image: blacktop/elasticsearch:6.2
environment:
- cluster.name=docker-cluster
- node.name=master-node
- node.master=true
- node.ingest=false
- node.data=false
volumes:
- data:/usr/share/elasticsearch/data
networks:
Expand All @@ -17,8 +22,14 @@ services:
####################################
ingest:
restart: unless-stopped
image: blacktop/elasticsearch:x-pack
command: ingest
image: blacktop/elasticsearch:6.2
environment:
- cluster.name=docker-cluster
- node.name=ingest-node-1
- node.master=true
- node.ingest=true
- node.data=false
- discovery.zen.ping.unicast.hosts=master
ports:
- "9200:9200"
links:
Expand All @@ -30,10 +41,15 @@ services:
###########################
data:
restart: unless-stopped
image: blacktop/elasticsearch:x-pack
image: blacktop/elasticsearch:6.2
environment:
- ES_JAVA_OPTS=-Xms2g -Xmx2g
command: data
- cluster.name=docker-cluster
- node.name=data-node-1
- node.master=false
- node.ingest=false
- node.data=true
- discovery.zen.ping.unicast.hosts=master
links:
- master:elastic-master
# volumes:
Expand All @@ -44,7 +60,7 @@ services:
# KIBANA NODE #
###############
kibana:
image: blacktop/kibana:x-pack
image: blacktop/kibana:6.2
ports:
- "80:5601"
links:
Expand Down
84 changes: 16 additions & 68 deletions geoip/elastic-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,95 +2,43 @@

set -e

es_opts=''
umask 0002

declare -a es_opts

while IFS='=' read -r envvar_key envvar_value
do
# Elasticsearch env vars need to have at least two dot separated lowercase words, e.g. `cluster.name`
if [[ "$envvar_key" =~ ^[a-z]+\.[a-z]+ ]]
then
if [[ "$envvar_key" =~ ^[a-z0-9_]+\.[a-z0-9_]+ ]]; then
if [[ ! -z $envvar_value ]]; then
es_opt="-E${envvar_key}=${envvar_value}"
es_opts+=" ${es_opt}"
es_opts+=("${es_opt}")
fi
fi
done < <(env)

export ES_JAVA_OPTS="-Des.cgroups.hierarchy.override=/ $ES_JAVA_OPTS"

# Add elasticsearch as command if needed
if [ "${1:0:1}" = '-' ]; then
set -- elasticsearch "$@" ${es_opts}
fi

################################################
# = MASTER NODE = #
################################################
if [ "$1" = 'master' -a "$(id -u)" = '0' ]; then
# Change node into a data node
CONFIG=/usr/share/elasticsearch/config/elasticsearch.yml
sed -ri "s!^(\#\s*)?(node\.master:).*!\2 'true'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.ingest:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.data:).*!\2 'false'!" $CONFIG

# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs

set -- su-exec elasticsearch "$@" ${es_opts}
fi

################################################
# = INGEST NODE = #
################################################
if [ "$1" = 'ingest' -a "$(id -u)" = '0' ]; then
# Change node into a data node
CONFIG=/usr/share/elasticsearch/config/elasticsearch.yml
sed -ri "s!^(\#\s*)?(node\.master:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.ingest:).*!\2 'true'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.data:).*!\2 'false'!" $CONFIG
# Set master.node's name
if ! grep -q "discovery.zen.ping.unicast.hosts" $CONFIG; then
echo "discovery.zen.ping.unicast.hosts: [\"elastic-master\"]" >> $CONFIG
fi

# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs

set -- su-exec elasticsearch "$@" ${es_opts}
# Determine if x-pack is enabled
if bin/elasticsearch-plugin list -s | grep -q x-pack; then
if [[ -n "$ELASTIC_PASSWORD" ]]; then
[[ -f config/elasticsearch.keystore ]] || bin/elasticsearch-keystore create
echo "$ELASTIC_PASSWORD" | bin/elasticsearch-keystore add -x 'bootstrap.password'
fi
fi

################################################
# = DATA NODE = #
################################################
if [ "$1" = 'data' -a "$(id -u)" = '0' ]; then
# Change node into a data node
CONFIG=/usr/share/elasticsearch/config/elasticsearch.yml
sed -ri "s!^(\#\s*)?(node\.master:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.ingest:).*!\2 'false'!" $CONFIG
sed -ri "s!^(\#\s*)?(node\.data:).*!\2 'true'!" $CONFIG
# Set master.node's name
if ! grep -q "discovery.zen.ping.unicast.hosts" $CONFIG; then
echo "discovery.zen.ping.unicast.hosts: [\"elastic-master\"]" >> $CONFIG
fi

# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs

set -- su-exec elasticsearch "$@" ${es_opts}

# Add elasticsearch as command if needed
if [ "${1:0:1}" = '-' ]; then
set -- elasticsearch "$@"
fi

# Drop root privileges if we are running elasticsearch
# allow the container to be started with `--user`
if [ "$1" = 'elasticsearch' -a "$(id -u)" = '0' ]; then
# Change the ownership of user-mutable directories to elasticsearch
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/logs
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/{data,logs}

set -- su-exec elasticsearch "$@" ${es_opts}
set -- su-exec elasticsearch "$@" "${es_opts[@]}"
fi

exec "$@"
Loading

0 comments on commit da9e072

Please sign in to comment.