diff --git a/modules/logstash/files/elasticsearch.default b/modules/elasticsearch/files/elasticsearch.default
similarity index 100%
rename from modules/logstash/files/elasticsearch.default
rename to modules/elasticsearch/files/elasticsearch.default
diff --git a/modules/logstash/files/elasticsearch.mapping.json b/modules/elasticsearch/files/elasticsearch.mapping.json
similarity index 100%
rename from modules/logstash/files/elasticsearch.mapping.json
rename to modules/elasticsearch/files/elasticsearch.mapping.json
diff --git a/modules/elasticsearch/manifests/init.pp b/modules/elasticsearch/manifests/init.pp
new file mode 100644
index 0000000000..560edc58a0
--- /dev/null
+++ b/modules/elasticsearch/manifests/init.pp
@@ -0,0 +1,116 @@
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# Class to install elasticsearch.
+#
+class elasticsearch (
+  $discover_nodes = ['localhost'],
+  $version = '0.20.5'
+) {
+  # install java runtime
+  package { 'java7-runtime-headless':
+    ensure => present,
+  }
+
+  exec { 'get_elasticsearch_deb':
+    command => "wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-${version}.deb -O /tmp/elasticsearch-${version}.deb",
+    path    => '/bin:/usr/bin',
+    creates => "/tmp/elasticsearch-${version}.deb",
+  }
+
+  exec { 'gen_elasticsearch_deb_sha1':
+    command => "sha1sum elasticsearch-${version}.deb > /tmp/elasticsearch-${version}.deb.sha1.gen",
+    path    => '/bin:/usr/bin',
+    cwd     => '/tmp',
+    creates => "/tmp/elasticsearch-${version}.deb.sha1.gen",
+    require => [
+      Exec['get_elasticsearch_deb'],
+    ]
+  }
+
+  exec { 'get_elasticsearch_deb_sha1':
+    command => "wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-${version}.deb.sha1.txt -O /tmp/elasticsearch-${version}.deb.sha1.txt",
+    path    => '/bin:/usr/bin',
+    creates => "/tmp/elasticsearch-${version}.deb.sha1.txt",
+  }
+
+  exec { 'check_elasticsearch_sha1':
+    command => "diff /tmp/elasticsearch-${version}.deb.sha1.txt /tmp/elasticsearch-${version}.deb.sha1.gen",
+    path    => '/bin:/usr/bin',
+    require => [
+      Exec['gen_elasticsearch_deb_sha1'],
+      Exec['get_elasticsearch_deb_sha1'],
+    ]
+  }
+
+  # install elastic search
+  package { 'elasticsearch':
+    ensure    => latest,
+    source    => "/tmp/elasticsearch-${version}.deb",
+    provider  => 'dpkg',
+    subscribe => Exec['get_elasticsearch_deb'],
+    require   => [
+      Package['java7-runtime-headless'],
+      Exec['check_elasticsearch_sha1'],
+    ]
+  }
+
+  file { '/etc/elasticsearch/elasticsearch.yml':
+    ensure  => present,
+    content => template('elasticsearch/elasticsearch.yml.erb'),
+    replace => true,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0644',
+    require => Package['elasticsearch'],
+  }
+
+  file { '/etc/elasticsearch/templates':
+    ensure  => directory,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0755',
+    require => Package['elasticsearch'],
+  }
+
+  file { '/etc/elasticsearch/default-mapping.json':
+    ensure  => present,
+    source  => 'puppet:///modules/elasticsearch/elasticsearch.mapping.json',
+    replace => true,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0644',
+    require => Package['elasticsearch'],
+  }
+
+  file { '/etc/default/elasticsearch':
+    ensure  => present,
+    source  => 'puppet:///modules/elasticsearch/elasticsearch.default',
+    replace => true,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0644',
+    require => Package['elasticsearch'],
+  }
+
+  service { 'elasticsearch':
+    ensure    => running,
+    require   => [
+      Package['elasticsearch'],
+      File['/etc/elasticsearch/elasticsearch.yml'],
+      File['/etc/elasticsearch/default-mapping.json'],
+      File['/etc/default/elasticsearch'],
+    ],
+  }
+}
diff --git a/modules/logstash/templates/elasticsearch.yml.erb b/modules/elasticsearch/templates/elasticsearch.yml.erb
similarity index 100%
rename from modules/logstash/templates/elasticsearch.yml.erb
rename to modules/elasticsearch/templates/elasticsearch.yml.erb
diff --git a/modules/logstash/manifests/elasticsearch.pp b/modules/logstash/manifests/elasticsearch.pp
index eb4562274e..be958f37d1 100644
--- a/modules/logstash/manifests/elasticsearch.pp
+++ b/modules/logstash/manifests/elasticsearch.pp
@@ -14,50 +14,7 @@
 #
 # Class to install elasticsearch.
 #
-class logstash::elasticsearch (
-  discover_nodes = ['localhost']
-) {
-  # install java runtime
-  package { 'java7-runtime-headless':
-    ensure => present,
-  }
-
-  exec { 'get_elasticsearch_deb':
-    command => 'wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.5.deb -O /tmp/elasticsearch-0.20.5.deb',
-    path    => '/bin:/usr/bin',
-    creates => '/tmp/elasticsearch-0.20.5.deb',
-  }
-
-  # install elastic search
-  package { 'elasticsearch':
-    ensure    => latest,
-    source    => '/tmp/elasticsearch-0.20.5.deb',
-    provider  => 'dpkg',
-    subscribe => Exec['get_elasticsearch_deb'],
-    require   => [
-      Package['java7-runtime-headless'],
-      Exec['get_elasticsearch_deb'],
-    ]
-  }
-
-  file { '/etc/elasticsearch/elasticsearch.yml':
-    ensure  => present,
-    content => template('logstash/elasticsearch.yml.erb'),
-    replace => true,
-    owner   => 'root',
-    group   => 'root',
-    mode    => '0644',
-    require => Package['elasticsearch'],
-  }
-
-  file { '/etc/elasticsearch/templates':
-    ensure  => directory,
-    owner   => 'root',
-    group   => 'root',
-    mode    => '0755',
-    require => Package['elasticsearch'],
-  }
-
+class logstash::elasticsearch {
   file { '/etc/elasticsearch/templates/logstash_settings.json':
     ensure  => present,
     source  => 'puppet:///modules/logstash/es-logstash-template.json',
@@ -67,34 +24,4 @@ class logstash::elasticsearch (
     mode    => '0644',
     require => File['/etc/elasticsearch/templates'],
   }
-
-  file { '/etc/elasticsearch/default-mapping.json':
-    ensure  => present,
-    source  => 'puppet:///modules/logstash/elasticsearch.mapping.json',
-    replace => true,
-    owner   => 'root',
-    group   => 'root',
-    mode    => '0644',
-    require => Package['elasticsearch'],
-  }
-
-  file { '/etc/default/elasticsearch':
-    ensure  => present,
-    source  => 'puppet:///modules/logstash/elasticsearch.default',
-    replace => true,
-    owner   => 'root',
-    group   => 'root',
-    mode    => '0644',
-    require => Package['elasticsearch'],
-  }
-
-  service { 'elasticsearch':
-    ensure    => running,
-    require   => [
-      Package['elasticsearch'],
-      File['/etc/elasticsearch/elasticsearch.yml'],
-      File['/etc/elasticsearch/default-mapping.json'],
-      File['/etc/default/elasticsearch'],
-    ],
-  }
 }
diff --git a/modules/openstack_project/manifests/elasticsearch.pp b/modules/openstack_project/manifests/elasticsearch.pp
index b6929e4408..24fc4fbf70 100644
--- a/modules/openstack_project/manifests/elasticsearch.pp
+++ b/modules/openstack_project/manifests/elasticsearch.pp
@@ -30,7 +30,9 @@ class openstack_project::elasticsearch (
     sysadmins                 => $sysadmins,
   }
 
-  class { 'logstash::elasticsearch':
+  class { 'logstash::elasticsearch': }
+
+  class { '::elasticsearch':
     discover_nodes => $discover_nodes,
   }