diff --git a/defaults/main.yml b/defaults/main.yml
index 2767c6d1dc00ed595a4d0fee9b0db69ea44262b2..6614d7da098135ca0fba1a0b44798ed87e9bef09 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1,2 +1,4 @@
 ---
 # defaults file for ansible-elasticsearch
+
+elasticsearch_cors_domains: [ 'localhost', '*.{{ ansible_domain }}' ]
diff --git a/handlers/main.yml b/handlers/main.yml
index 2a963e0bb3fe2c1bd4fa39c56980742a87917870..bc808f32388d1ba1cc245e193962fc991385244b 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,2 +1,7 @@
 ---
 # handlers file for ansible-elasticsearch
+
+- name: Restart Elasticsearch
+  service:
+    name: elasticsearch
+    state: restarted
diff --git a/tasks/main.yml b/tasks/main.yml
index 489a4187fbb7706d268f3081c8b89abe2b3b05bf..f86d561d75d6677b0e36df1c3aeb0972a02765ce 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,2 +1,48 @@
 ---
 # tasks file for ansible-elasticsearch
+
+- name: Add apt repo key
+  apt_key:
+    url: https://packages.elastic.co/GPG-KEY-elasticsearch
+    state: present
+
+- name: Add apt repo
+  apt_repository:
+    repo: deb http://packages.elastic.co/elasticsearch/2.x/debian stable main
+    state: present
+    update_cache: yes
+
+- name: apt install
+  with_items:
+  - openjdk-7-jre-headless
+  - elasticsearch
+  apt:
+    name: '{{ item }}'
+    state: present
+    update_cache: yes
+    cache_valid_time: 3600
+
+- name: Set Java options
+  lineinfile:
+    dest: /etc/default/elasticsearch
+    line: "ES_JAVA_OPTS='-Djava.net.preferIPv4Stack=true'"
+    regexp: '^ES_JAVA_OPTS='
+    state: present
+  notify:
+  - Restart Elasticsearch
+
+- name: Copy configutation template
+  template:
+    src: elasticsearch.yml.j2
+    dest: /etc/elasticsearch/elasticsearch.yml
+    owner: root
+    group: root
+    mode: '0644'
+  notify:
+  - Restart Elasticsearch
+
+- name: Enable, start Elasticsearch service
+  service:
+    name: elasticsearch
+    state: started
+    enabled: yes
diff --git a/templates/elasticsearch.yml.j2 b/templates/elasticsearch.yml.j2
new file mode 100644
index 0000000000000000000000000000000000000000..1b7f762dc6c92bcb41949ed1e370da4cc62a586f
--- /dev/null
+++ b/templates/elasticsearch.yml.j2
@@ -0,0 +1 @@
+{{ elasticsearch_config|to_nice_yaml }}
diff --git a/vars/main.yml b/vars/main.yml
index aa4fb42f6036380f5f4f9bccf51edf8aabbda552..c975e64d6eadbe055e1d692b674fd9b593255260 100644
--- a/vars/main.yml
+++ b/vars/main.yml
@@ -1,2 +1,7 @@
 ---
 # vars file for ansible-elasticsearch
+
+elasticsearch_config:
+  http.cors.enabled: true
+  'http.cors.allow-origin': '{{ elasticsearch_cors_domains }}'
+  indices.fielddata.cache.size: '50%'