summaryrefslogtreecommitdiff
path: root/vendor/ruflin/elastica/ansible
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ruflin/elastica/ansible')
-rw-r--r--vendor/ruflin/elastica/ansible/es-playbook.yml20
-rwxr-xr-xvendor/ruflin/elastica/ansible/provision.sh63
-rw-r--r--vendor/ruflin/elastica/ansible/roles/base/tasks/main.yml13
-rw-r--r--vendor/ruflin/elastica/ansible/roles/elasticsearch/handlers/main.yml6
-rw-r--r--vendor/ruflin/elastica/ansible/roles/elasticsearch/tasks/main.yml101
-rw-r--r--vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-0.yml10
-rw-r--r--vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-1.yml10
-rw-r--r--vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-default.yml40
-rwxr-xr-xvendor/ruflin/elastica/ansible/roles/elasticsearch/templates/elasticsearch.service229
-rw-r--r--vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/logging.yml56
-rw-r--r--vendor/ruflin/elastica/ansible/roles/nginx/handlers/main.yml6
-rw-r--r--vendor/ruflin/elastica/ansible/roles/nginx/tasks/main.yml26
-rw-r--r--vendor/ruflin/elastica/ansible/roles/nginx/templates/mime.types.j2109
-rw-r--r--vendor/ruflin/elastica/ansible/roles/nginx/templates/nginx.conf.j235
-rw-r--r--vendor/ruflin/elastica/ansible/roles/php/tasks/main.yml43
15 files changed, 767 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/ansible/es-playbook.yml b/vendor/ruflin/elastica/ansible/es-playbook.yml
new file mode 100644
index 00000000..3a471b64
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/es-playbook.yml
@@ -0,0 +1,20 @@
+---
+
+- name: Create a virtual machine
+ connection: local
+ hosts: localhost
+ sudo: true
+ vars:
+ - ES_VER: "1.6.0"
+ - ES_SHORT_VER: "1.6"
+ - ES_MAPPER_ATTACHMENTS_VER: "2.6.0"
+ - ES_TRANSPORT_MEMCACHED_VER: "2.6.0"
+ - ES_TRANSPORT_THRIFT_VER: "2.6.0"
+ - ES_GEOCLUSTER_FACET_VER: "0.0.12"
+ - ES_IMAGE_PLUGIN_VER: "1.4.0"
+ - ES_PROJECT_ROOT: "{{ lookup('env', 'ES_PROJECT_ROOT') }}"
+ roles:
+ - base
+ - elasticsearch
+ - nginx
+ - php
diff --git a/vendor/ruflin/elastica/ansible/provision.sh b/vendor/ruflin/elastica/ansible/provision.sh
new file mode 100755
index 00000000..6ea8e575
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/provision.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+set -o xtrace
+
+install_ansible() {
+ sudo apt-get update
+ sudo apt-get install python python-pip python-dev -y
+ sudo pip install ansible==1.8.2
+ sudo mkdir -p /etc/ansible/
+ echo "localhost" | sudo tee /etc/ansible/hosts
+}
+
+run_playbook() {
+ # Write to stdout directly
+ export PYTHONUNBUFFERED=1
+
+ # No cows >_<
+ export ANSIBLE_NOCOWS=1
+
+ # Root of git repo
+ if [ -z "$ES_PROJECT_ROOT" ]; then
+ export ES_PROJECT_ROOT="$(dirname $(dirname $(readlink -f $0)))"
+ fi
+
+ if [ ! -x $(which ansible-playbook) ]; then
+ echo "Ansible is not installed"
+ return 1
+ fi
+
+ ansible-playbook $ES_PROJECT_ROOT/ansible/es-playbook.yml -v | tee /tmp/ansible-playbook-progress
+
+ if grep -q "FATAL\|ERROR" /tmp/ansible-playbook-progress; then
+ return 1
+ fi
+}
+
+check_cluster() {
+ curl -m 5 -s -o /dev/null "http://localhost:9200" &&
+ curl -m 5 -s -o /dev/null "http://localhost:9201"
+ return $?
+}
+
+travis_retry() {
+ # We don't use builtin Travis CI function, because this script is also used for vagrant provision.
+ # But main idea of restarts is so simple, so lets override it without name change.
+
+ $@ && return 0
+
+ echo "The command $@ failed. Retrying, 2 of 3"
+ sleep 60s && $@ && return 0
+
+ echo "The command $@ failed. Retrying, 3 of 3"
+ sleep 60s && $@ && return 0
+
+ echo "The command $@ failed."
+ return 1
+}
+
+travis_retry install_ansible || exit 1
+
+travis_retry run_playbook || exit 1
+
+travis_retry check_cluster || exit 1
diff --git a/vendor/ruflin/elastica/ansible/roles/base/tasks/main.yml b/vendor/ruflin/elastica/ansible/roles/base/tasks/main.yml
new file mode 100644
index 00000000..061b8155
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/base/tasks/main.yml
@@ -0,0 +1,13 @@
+---
+
+- name: install base packages
+ apt: >
+ force=yes
+ name={{ item }}
+ state=present
+ update_cache=no
+ with_items:
+ - curl
+ - git
+ - htop
+ - vim
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/handlers/main.yml b/vendor/ruflin/elastica/ansible/roles/elasticsearch/handlers/main.yml
new file mode 100644
index 00000000..97cccdd2
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/handlers/main.yml
@@ -0,0 +1,6 @@
+---
+
+- name: restart elasticsearch
+ service: >
+ name=elasticsearch
+ state=restarted
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/tasks/main.yml b/vendor/ruflin/elastica/ansible/roles/elasticsearch/tasks/main.yml
new file mode 100644
index 00000000..c2041343
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/tasks/main.yml
@@ -0,0 +1,101 @@
+---
+
+- name: import ppa:webupd8team/java gpg key
+ apt_key: >
+ id=EEA14886
+ keyserver=keyserver.ubuntu.com
+ state=present
+
+- name: add ppa:webupd8team/java repository
+ apt_repository: >
+ repo="deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main"
+ state=present
+ update_cache=yes
+
+- name: accept oracle license
+ shell: >
+ echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
+
+- name: install java
+ apt: >
+ force=yes
+ name={{ item }}
+ state=present
+ update_cache=no
+ with_items:
+ - oracle-java7-installer
+ - oracle-java7-set-default
+
+- name: import elasticsearch gpg key
+ apt_key: >
+ id=D88E42B4
+ url=https://packages.elasticsearch.org/GPG-KEY-elasticsearch
+ state=present
+
+- name: add elasticsearch repository
+ apt_repository: >
+ repo="deb http://packages.elasticsearch.org/elasticsearch/{{ ES_SHORT_VER }}/debian stable main"
+ state=present
+ update_cache=yes
+
+- name: install elasticsearch
+ apt: >
+ force=yes
+ name=elasticsearch={{ ES_VER }}
+ state=present
+ update_cache=no
+
+- name: install image plugin
+ command: >
+ creates=/usr/share/elasticsearch/plugins/image
+ /usr/share/elasticsearch/bin/plugin --url https://github.com/SibaTokyo/elasticsearch-image/releases/download/{{ ES_IMAGE_PLUGIN_VER }}/elasticsearch-image-{{ ES_IMAGE_PLUGIN_VER }}.zip -install image
+
+- name: install mapper-attachments plugin
+ command: >
+ creates=/usr/share/elasticsearch/plugins/mapper-attachments
+ /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-mapper-attachments/{{ ES_MAPPER_ATTACHMENTS_VER }}
+
+- name: install geocluster-facet plugin
+ command: >
+ creates=/usr/share/elasticsearch/plugins/geocluster-facet
+ /usr/share/elasticsearch/bin/plugin -install geocluster-facet --url https://github.com/zenobase/geocluster-facet/releases/download/{{ ES_GEOCLUSTER_FACET_VER }}/geocluster-facet-{{ ES_GEOCLUSTER_FACET_VER }}.jar
+
+- name: install transport-thrift plugin
+ command: >
+ creates=/usr/share/elasticsearch/plugins/transport-thrift
+ /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-transport-thrift/{{ ES_TRANSPORT_THRIFT_VER }}
+
+- name: install transport-memcached plugin
+ command: >
+ creates=/usr/share/elasticsearch/plugins/transport-memcached
+ /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-transport-memcached/{{ ES_TRANSPORT_MEMCACHED_VER }}
+
+- name: remove default config
+ file: >
+ path={{ item }}
+ state=absent
+ with_items:
+ - /etc/default/elasticsearch
+ - /etc/elasticsearch/elasticsearch.yml
+
+- name: create custom config
+ template: >
+ dest=/etc/elasticsearch/{{ item }}
+ src={{ item }}
+ with_items:
+ - config-0.yml
+ - config-1.yml
+ - logging.yml
+ notify: restart elasticsearch
+
+- name: create elasticsearch service script
+ template: >
+ dest=/etc/init.d/elasticsearch
+ src=elasticsearch.service
+ notify: restart elasticsearch
+
+- name: start elasticsearch
+ service: >
+ enabled=yes
+ name=elasticsearch
+ state=started
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-0.yml b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-0.yml
new file mode 100644
index 00000000..aa956910
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-0.yml
@@ -0,0 +1,10 @@
+{% extends "config-default.yml" %}
+
+{% block config %}
+
+http.port: 9200
+transport.tcp.port: 9300
+thrift.port: 9500
+memcached.port: 11211
+
+{% endblock %}
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-1.yml b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-1.yml
new file mode 100644
index 00000000..a54d719e
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-1.yml
@@ -0,0 +1,10 @@
+{% extends "config-default.yml" %}
+
+{% block config %}
+
+http.port: 9201
+transport.tcp.port: 9301
+thrift.port: 9501
+memcached.port: 11212
+
+{% endblock %}
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-default.yml b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-default.yml
new file mode 100644
index 00000000..0917f244
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/config-default.yml
@@ -0,0 +1,40 @@
+{% block default_config %}
+
+index.number_of_shards: 2
+index.number_of_replicas: 0
+
+# Dont write data to hdd in tests
+index.store.type: memory
+
+# Required plugins
+plugin.mandatory: mapper-attachments, geocluster-facet, transport-thrift, transport-memcached, image
+
+# For bulk tests
+bulk.udp.enabled: true
+bulk.udp.bulk_actions: 5
+
+# For script tests
+script.inline: on
+script.indexed: on
+
+# Disable dynamic memory allocation
+bootstrap.mlockall: true
+
+# Dont accept connections not from localhost
+network.host: "127.0.0.1"
+
+# Limit threadpool by set number of available processors to 1
+# Without this, travis builds will be failed with OutOfMemory error
+processors: 1
+
+# All nodes will be called Elastica
+node.name: Elastica
+
+# Added for snapshot tests
+path.repo: ["/tmp/test_register", "/tmp/test_repository"]
+
+{% endblock %}
+
+{% block config %}
+# Node specific config should be overwritten in child template
+{% endblock %}
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/elasticsearch.service b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/elasticsearch.service
new file mode 100755
index 00000000..0268e230
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/elasticsearch.service
@@ -0,0 +1,229 @@
+#!/bin/sh
+#
+# /etc/init.d/elasticsearch -- startup script for Elasticsearch
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+# Modified for Tomcat by Stefan Gybas <sgybas@debian.org>.
+# Modified for Tomcat6 by Thierry Carrez <thierry.carrez@ubuntu.com>.
+# Additional improvements by Jason Brittain <jason.brittain@mulesoft.com>.
+# Modified by Nicolas Huray for Elasticsearch <nicolas.huray@gmail.com>.
+# Modified by Igor Denisenko for Elastica <im.denisenko@yahoo.com>
+#
+### BEGIN INIT INFO
+# Provides: elasticsearch
+# Required-Start: $network $remote_fs $named
+# Required-Stop: $network $remote_fs $named
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Starts elasticsearch
+# Description: Starts elasticsearch using start-stop-daemon
+### END INIT INFO
+
+PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+NAME="elasticsearch"
+DESC="Elasticsearch Server"
+
+if [ `id -u` -ne 0 ]; then
+ echo "You need root privileges to run this script"
+ exit 1
+fi
+
+
+. /lib/lsb/init-functions
+
+if [ -r /etc/default/rcS ]; then
+ . /etc/default/rcS
+fi
+
+
+# Run Elasticsearch as this user ID and group ID
+ES_USER="elasticsearch"
+ES_GROUP="elasticsearch"
+
+# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not defined)
+JDK_DIRS="/usr/lib/jvm/java-8-oracle/ /usr/lib/jvm/j2sdk1.8-oracle/ /usr/lib/jvm/jdk-7-oracle-x64 /usr/lib/jvm/java-7-oracle /usr/lib/jvm/j2sdk1.7-oracle/ /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/java-7-openjdk-amd64/ /usr/lib/jvm/java-7-openjdk-armhf /usr/lib/jvm/java-7-openjdk-i386/ /usr/lib/jvm/default-java"
+
+# Look for the right JVM to use
+for jdir in $JDK_DIRS; do
+ if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
+ JAVA_HOME="$jdir"
+ fi
+done
+export JAVA_HOME
+
+# Directory where the Elasticsearch binary distribution resides
+ES_HOME="/usr/share/$NAME"
+
+# Heap size defaults to 256m min, 1g max
+# Be modest. Entire cluster will allocate (3*ES_HEAP_SIZE) memory
+ES_HEAP_SIZE="256m"
+export ES_HEAP_SIZE
+
+# Heap new generation
+# ES_HEAP_NEWSIZE=
+# export ES_HEAP_NEWSIZE
+
+# max direct memory
+# ES_DIRECT_SIZE=
+# export ES_DIRECT_SIZE
+
+# Additional Java OPTS
+ES_JAVA_OPTS="-server"
+export ES_JAVA_OPTS
+
+# Maximum number of open files
+MAX_OPEN_FILES="65535"
+
+# Maximum amount of locked memory
+MAX_LOCKED_MEMORY="unlimited"
+
+# Elasticsearch log directory
+LOG_DIR="/var/log/$NAME"
+
+# Elasticsearch data directory
+DATA_DIR="/var/lib/$NAME"
+
+# Elasticsearch work directory
+WORK_DIR="/tmp/$NAME"
+
+# Elasticsearch configuration directory
+CONF_DIR="/etc/$NAME"
+
+# Define other required variables
+DAEMON="$ES_HOME/bin/elasticsearch"
+
+# Check DAEMON exists
+if [ ! -x $DAEMON ]; then
+ exit 0
+fi
+
+checkJava() {
+ if [ -x "$JAVA_HOME/bin/java" ]; then
+ JAVA="$JAVA_HOME/bin/java"
+ else
+ JAVA=`which java`
+ fi
+
+ if [ ! -x "$JAVA" ]; then
+ echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
+ exit 1
+ fi
+}
+
+case "$1" in
+ start)
+ checkJava
+
+ if [ -n "$MAX_LOCKED_MEMORY" -a -z "$ES_HEAP_SIZE" ]; then
+ log_failure_msg "MAX_LOCKED_MEMORY is set - ES_HEAP_SIZE must also be set"
+ exit 1
+ fi
+
+
+ mkdir -p "$LOG_DIR" "$DATA_DIR" "$WORK_DIR"
+ chown "$ES_USER":"$ES_GROUP" "$LOG_DIR" "$DATA_DIR" "$WORK_DIR"
+
+ if [ -n "$MAX_OPEN_FILES" ];then
+ ulimit -n $MAX_OPEN_FILES
+ fi
+
+ if [ -n "$MAX_LOCKED_MEMORY" ];then
+ ulimit -l $MAX_LOCKED_MEMORY
+ fi
+
+ ulimit -s 1024
+
+ for node in 0 1; do
+ log_daemon_msg "Starting elasticsearch node #$node"
+
+ PID_FILE="/var/run/$NAME-$node.pid"
+ CONF_FILE="$CONF_DIR/config-$node.yml"
+
+ DAEMON="$ES_HOME/bin/elasticsearch"
+ DAEMON_OPTS="
+ -Des.config=$CONF_FILE \
+ -Des.path.home=$ES_HOME \
+ -Des.path.logs=$LOG_DIR \
+ -Des.path.data=$DATA_DIR \
+ -Des.path.work=$WORK_DIR \
+ -Des.path.conf=$CONF_DIR \
+ -p $PID_FILE
+ "
+
+ pid=`pidofproc -p $PID_FILE elasticsearch`
+ if [ -n "$pid" ] ; then
+ log_begin_msg "Elasticsearch node #$node already running"
+ continue
+ fi
+
+ touch "$PID_FILE"
+ chown "$ES_USER":"$ES_GROUP" "$PID_FILE"
+
+ # Start Daemon
+ start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec "$DAEMON" -- "$DAEMON_OPTS"
+ return=$?
+ if [ $return -eq 0 ]; then
+ i=0
+ timeout=10
+ # Wait for the process to be properly started before exiting
+ until { cat "$PID_FILE" | xargs kill -0; } >/dev/null 2>&1
+ do
+ sleep 1
+ i=$(($i + 1))
+ [ $i -gt $timeout ] && log_end_msg 1
+ done
+ else
+ log_end_msg $return
+ fi
+ done
+ ;;
+ stop)
+ for node in 0 1; do
+ log_daemon_msg "Stopping elasticsearch node #$node"
+
+ PID_FILE="/var/run/$NAME-$node.pid"
+
+ if [ -f "$PID_FILE" ]; then
+ start-stop-daemon --stop --pidfile "$PID_FILE" \
+ --user "$ES_USER" \
+ --retry=TERM/20/KILL/5 >/dev/null
+ if [ $? -eq 1 ]; then
+ log_progress_msg "$DESC is not running but pid file exists, cleaning up"
+ elif [ $? -eq 3 ]; then
+ PID="`cat $PID_FILE`"
+ log_failure_msg "Failed to stop $DESC (pid $PID)"
+ exit 1
+ fi
+ rm -f "$PID_FILE"
+ else
+ log_progress_msg "(not running)"
+ fi
+ done
+
+ log_end_msg 0
+ ;;
+ status)
+ for node in 0 1; do
+ PID_FILE="/var/run/$NAME-$node.pid"
+ status_of_proc -p $PID_FILE "Elasticsearch node #$node" "Elasticsearch node #$node"
+ done
+ exit 0
+ ;;
+ restart|force-reload)
+ for node in 0 1; do
+ PID_FILE="/var/run/$NAME-$node.pid"
+ if [ -f "$PID_FILE" ]; then
+ $0 stop
+ sleep 1
+ fi
+ done
+ $0 start
+ ;;
+ *)
+ log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/logging.yml b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/logging.yml
new file mode 100644
index 00000000..9e00d01c
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/elasticsearch/templates/logging.yml
@@ -0,0 +1,56 @@
+# you can override this using by setting a system property, for example -Des.logger.level=DEBUG
+es.logger.level: INFO
+rootLogger: ${es.logger.level}, console, file
+logger:
+ # log action execution errors for easier debugging
+ action: DEBUG
+ # reduce the logging for aws, too much is logged under the default INFO
+ com.amazonaws: WARN
+
+ # gateway
+ #gateway: DEBUG
+ #index.gateway: DEBUG
+
+ # peer shard recovery
+ #indices.recovery: DEBUG
+
+ # discovery
+ #discovery: TRACE
+
+ 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
+
+appender:
+ console:
+ type: console
+ layout:
+ type: consolePattern
+ conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+ file:
+ type: dailyRollingFile
+ file: ${path.logs}/${cluster.name}.log
+ datePattern: "'.'yyyy-MM-dd"
+ layout:
+ type: pattern
+ conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+ index_search_slow_log_file:
+ type: dailyRollingFile
+ file: ${path.logs}/${cluster.name}_index_search_slowlog.log
+ datePattern: "'.'yyyy-MM-dd"
+ layout:
+ type: pattern
+ conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
+
+ index_indexing_slow_log_file:
+ type: dailyRollingFile
+ file: ${path.logs}/${cluster.name}_index_indexing_slowlog.log
+ datePattern: "'.'yyyy-MM-dd"
+ layout:
+ type: pattern
+ conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
diff --git a/vendor/ruflin/elastica/ansible/roles/nginx/handlers/main.yml b/vendor/ruflin/elastica/ansible/roles/nginx/handlers/main.yml
new file mode 100644
index 00000000..fc583f27
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/nginx/handlers/main.yml
@@ -0,0 +1,6 @@
+---
+
+- name: restart nginx
+ service: >
+ name=nginx
+ state=restarted
diff --git a/vendor/ruflin/elastica/ansible/roles/nginx/tasks/main.yml b/vendor/ruflin/elastica/ansible/roles/nginx/tasks/main.yml
new file mode 100644
index 00000000..6b260531
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/nginx/tasks/main.yml
@@ -0,0 +1,26 @@
+---
+
+- name: install nginx
+ apt: >
+ force=yes
+ name=nginx
+ state=present
+ update_cache=no
+
+- name: create mime.types
+ template: >
+ dest=/etc/nginx/mime.types
+ src=mime.types.j2
+ notify: restart nginx
+
+- name: create nginx.conf
+ template: >
+ dest=/etc/nginx/nginx.conf
+ src=nginx.conf.j2
+ notify: restart nginx
+
+- name: start nginx
+ service: >
+ enabled=yes
+ name=nginx
+ state=started
diff --git a/vendor/ruflin/elastica/ansible/roles/nginx/templates/mime.types.j2 b/vendor/ruflin/elastica/ansible/roles/nginx/templates/mime.types.j2
new file mode 100644
index 00000000..6c64bf73
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/nginx/templates/mime.types.j2
@@ -0,0 +1,109 @@
+types {
+
+# Audio
+ audio/midi mid midi kar;
+ audio/mp4 aac f4a f4b m4a;
+ audio/mpeg mp3;
+ audio/ogg oga ogg opus;
+ audio/x-realaudio ra;
+ audio/x-wav wav;
+
+# Images
+ image/bmp bmp;
+ image/gif gif;
+ image/jpeg jpeg jpg;
+ image/png png;
+ image/svg+xml svg svgz;
+ image/tiff tif tiff;
+ image/vnd.wap.wbmp wbmp;
+ image/webp webp;
+ image/x-icon ico cur;
+ image/x-jng jng;
+
+# JavaScript
+ application/javascript js;
+ application/json json;
+
+# Manifest files
+ application/x-web-app-manifest+json webapp;
+ text/cache-manifest manifest appcache;
+
+# Microsoft Office
+ application/msword doc;
+ application/vnd.ms-excel xls;
+ application/vnd.ms-powerpoint ppt;
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
+ application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
+
+# Video
+ video/3gpp 3gpp 3gp;
+ video/mp4 mp4 m4v f4v f4p;
+ video/mpeg mpeg mpg;
+ video/ogg ogv;
+ video/quicktime mov;
+ video/webm webm;
+ video/x-flv flv;
+ video/x-mng mng;
+ video/x-ms-asf asx asf;
+ video/x-ms-wmv wmv;
+ video/x-msvideo avi;
+
+# Web feeds
+ application/xml atom rdf rss xml;
+
+# Web fonts
+ application/font-woff woff;
+ application/font-woff2 woff2;
+ application/vnd.ms-fontobject eot;
+ application/x-font-ttf ttc ttf;
+ font/opentype otf;
+
+# Other
+ application/java-archive jar war ear;
+ application/mac-binhex40 hqx;
+ application/pdf pdf;
+ application/postscript ps eps ai;
+ application/rtf rtf;
+ application/vnd.wap.wmlc wmlc;
+ application/xhtml+xml xhtml;
+ application/vnd.google-earth.kml+xml kml;
+ application/vnd.google-earth.kmz kmz;
+ application/x-7z-compressed 7z;
+ application/x-chrome-extension crx;
+ application/x-opera-extension oex;
+ application/x-xpinstall xpi;
+ application/x-cocoa cco;
+ application/x-java-archive-diff jardiff;
+ application/x-java-jnlp-file jnlp;
+ application/x-makeself run;
+ application/x-perl pl pm;
+ application/x-pilot prc pdb;
+ application/x-rar-compressed rar;
+ application/x-redhat-package-manager rpm;
+ application/x-sea sea;
+ application/x-shockwave-flash swf;
+ application/x-stuffit sit;
+ application/x-tcl tcl tk;
+ application/x-x509-ca-cert der pem crt;
+ application/x-bittorrent torrent;
+ application/zip zip;
+
+ application/octet-stream bin exe dll;
+ application/octet-stream deb;
+ application/octet-stream dmg;
+ application/octet-stream iso img;
+ application/octet-stream msi msp msm;
+ application/octet-stream safariextz;
+
+ text/css css;
+ text/html html htm shtml;
+ text/mathml mml;
+ text/plain txt;
+ text/vnd.sun.j2me.app-descriptor jad;
+ text/vnd.wap.wml wml;
+ text/vtt vtt;
+ text/x-component htc;
+ text/x-vcard vcf;
+
+}
diff --git a/vendor/ruflin/elastica/ansible/roles/nginx/templates/nginx.conf.j2 b/vendor/ruflin/elastica/ansible/roles/nginx/templates/nginx.conf.j2
new file mode 100644
index 00000000..17966f7a
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/nginx/templates/nginx.conf.j2
@@ -0,0 +1,35 @@
+events {
+ worker_connections 1024;
+}
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+ charset_types text/xml text/plain text/vnd.wap.wml application/x-javascript application/rss+xml text/css application/javascript application/json;
+
+ server {
+ listen 80;
+
+ root {{ ES_PROJECT_ROOT }};
+
+ location / {
+ autoindex on;
+ }
+ }
+
+ server {
+ listen 127.0.0.1:12345;
+
+ location / {
+ proxy_pass http://127.0.0.1:9200;
+ }
+ }
+
+ server {
+ listen 127.0.0.1:12346;
+
+ location / {
+ return 403;
+ }
+ }
+}
diff --git a/vendor/ruflin/elastica/ansible/roles/php/tasks/main.yml b/vendor/ruflin/elastica/ansible/roles/php/tasks/main.yml
new file mode 100644
index 00000000..fff65d52
--- /dev/null
+++ b/vendor/ruflin/elastica/ansible/roles/php/tasks/main.yml
@@ -0,0 +1,43 @@
+---
+- name: import ppa:ondrej/php5 gpg key
+ apt_key: >
+ id=E5267A6C
+ keyserver=keyserver.ubuntu.com
+ state=present
+
+- name: add ppa:ondrej/php5 repository
+ apt_repository: >
+ repo="deb http://ppa.launchpad.net/ondrej/php5/ubuntu precise main"
+ state=present
+ update_cache=yes
+
+- name: install php
+ apt: >
+ force=yes
+ name={{ item }}
+ state=present
+ update_cache=no
+ with_items:
+ - php5-cli
+ - php5-curl
+ - php5-xdebug
+ - php5-memcache
+
+- name: install phar packages
+ get_url: >
+ dest={{ item.dest }}
+ url={{ item.url }}
+ mode=0755
+ with_items:
+ - { dest: "/usr/local/bin/php-cs-fixer", url: "http://get.sensiolabs.org/php-cs-fixer.phar" }
+ - { dest: "/usr/local/bin/phpdoc", url: "http://phpdoc.org/phpDocumentor.phar" }
+ - { dest: "/usr/local/bin/phpunit", url: "https://phar.phpunit.de/phpunit.phar" }
+ - { dest: "/usr/local/bin/composer", url: "https://getcomposer.org/composer.phar" }
+
+- name: install dependencies from composer.json
+ composer: >
+ command=install
+ optimize_autoloader=yes
+ prefer_source=yes
+ no_dev=no
+ working_dir={{ ES_PROJECT_ROOT }}