From 792666dd79aef7d041c6d5f0ce1f57125ee1affc Mon Sep 17 00:00:00 2001 From: akwasniewska Date: Thu, 14 Jan 2016 11:06:29 +0100 Subject: Added Elasticearch and its deployment. Part of ELK stack. Includes Dockerfiles for both Centos and Ubuntu. Change-Id: I9f76adf084cd4f68e29326112b76ffd02b5adada Partially-implements: blueprint central-logging-service --- docker/base/Dockerfile.j2 | 6 ++++- docker/base/elasticsearch.yum.repo | 6 +++++ docker/base/sources.list | 3 +++ docker/elasticsearch/Dockerfile.j2 | 40 ++++++++++++++++++++++++++++++ docker/elasticsearch/elasticsearch_sudoers | 1 + docker/elasticsearch/extend_start.sh | 6 +++++ 6 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 docker/base/elasticsearch.yum.repo create mode 100644 docker/elasticsearch/Dockerfile.j2 create mode 100644 docker/elasticsearch/elasticsearch_sudoers create mode 100644 docker/elasticsearch/extend_start.sh (limited to 'docker') diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2 index 4fe02e7e1..2b394b400 100644 --- a/docker/base/Dockerfile.j2 +++ b/docker/base/Dockerfile.j2 @@ -18,6 +18,8 @@ ENV KOLLA_INSTALL_METATYPE {{ install_metatype }} {% if base_distro in ['fedora', 'centos', 'oraclelinux', 'rhel'] %} #### BEGIN REPO ENABLEMENT +# Turns on Elasticsearch repos +COPY elasticsearch.yum.repo /etc/yum.repos.d/elasticsearch.repo # Turns on MariaDB repos throughout the RPM build COPY mariadb.yum.repo /etc/yum.repos.d/MariaDB.repo @@ -28,7 +30,8 @@ RUN yum -y install http://repo.percona.com/release/7/RPMS/x86_64/percona-release RUN rpm --import http://yum.mariadb.org/RPM-GPG-KEY-MariaDB \ && rpm --import https://download.ceph.com/keys/release.asc \ - && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Percona + && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Percona \ + && rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch {% if install_metatype in ['rdo', 'mixed'] %} @@ -153,6 +156,7 @@ RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 199369E540 && apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 391A9AA2147192839E9DB0315EDB1B62EC4926EA \ && apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 430BDF5C56E7C94E848EE60C1C4CBDCDCD2EFD2A \ && apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 08B73419AC32B4E966C1A330E84AC2C0460F3994 \ + && apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 46095ACC8548582C1A2699A9D27D666CD88E42B4 \ && apt-get update \ && apt-get upgrade -y \ && apt-get dist-upgrade -y \ diff --git a/docker/base/elasticsearch.yum.repo b/docker/base/elasticsearch.yum.repo new file mode 100644 index 000000000..e9d28a615 --- /dev/null +++ b/docker/base/elasticsearch.yum.repo @@ -0,0 +1,6 @@ +[elasticsearch-2.x] +name=Elasticsearch repository for 2.x packages +baseurl=http://packages.elastic.co/elasticsearch/2.x/centos +gpgcheck=1 +gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch +enabled=1 diff --git a/docker/base/sources.list b/docker/base/sources.list index d63541f02..3a6684490 100644 --- a/docker/base/sources.list +++ b/docker/base/sources.list @@ -18,3 +18,6 @@ deb http://repo.percona.com/apt trusty main # Ceph repo deb http://download.ceph.com/debian-hammer/ trusty main + +# Elastic repo +deb http://packages.elastic.co/elasticsearch/2.x/debian stable main diff --git a/docker/elasticsearch/Dockerfile.j2 b/docker/elasticsearch/Dockerfile.j2 new file mode 100644 index 000000000..aa9f43c1b --- /dev/null +++ b/docker/elasticsearch/Dockerfile.j2 @@ -0,0 +1,40 @@ +FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }} +MAINTAINER {{ maintainer }} + + +{% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] %} + +ENV JAVA_HOME /usr/lib/jvm/jre-1.7.0-openjdk/ + +RUN yum -y install \ + java-1.7.0-openjdk \ + elasticsearch-2.1.1 \ + && yum clean all + +{% elif base_distro in ['ubuntu', 'debian'] %} + +ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64/ + +RUN apt-get install -y --no-install-recommends \ + openjdk-7-jre \ + elasticsearch=2.1.1 \ + && apt-get clean + +{% endif %} + +COPY elasticsearch_sudoers /etc/sudoers.d/elasticsearch_sudoers +COPY extend_start.sh /usr/local/bin/kolla_extend_start +RUN chmod 755 /usr/local/bin/kolla_extend_start \ + && chmod 750 /etc/sudoers.d \ + && chmod 440 /etc/sudoers.d/elasticsearch_sudoers \ + && usermod -a -G kolla elasticsearch + + +# by default elasticsearch shell is /bin/false, we need +# /bin/bash to run elasticsearch as non-root +# https://discuss.elastic.co/t/running-as-non-root-user-service-wrapper-has-changed/7863 +RUN usermod -s /bin/bash elasticsearch -d /usr/share/elasticsearch + +{{ include_footer }} + +USER elasticsearch diff --git a/docker/elasticsearch/elasticsearch_sudoers b/docker/elasticsearch/elasticsearch_sudoers new file mode 100644 index 000000000..76396c68a --- /dev/null +++ b/docker/elasticsearch/elasticsearch_sudoers @@ -0,0 +1 @@ +%kolla ALL=(root) NOPASSWD: /bin/chown elasticsearch\: /var/lib/elasticsearch/data, /usr/bin/chown elasticsearch\: /var/lib/elasticsearch/data diff --git a/docker/elasticsearch/extend_start.sh b/docker/elasticsearch/extend_start.sh new file mode 100644 index 000000000..ac78966fb --- /dev/null +++ b/docker/elasticsearch/extend_start.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Only update permissions if permissions need to be updated +if [[ $(stat -c %U:%G /var/lib/elasticsearch/data) != "elasticsearch:elasticsearch" ]]; then + sudo chown elasticsearch: /var/lib/elasticsearch/data +fi -- cgit v1.2.3