Skip to content
This repository has been archived by the owner on Dec 2, 2020. It is now read-only.

Commit

Permalink
Merge pull request #11 from boxen/refactor
Browse files Browse the repository at this point in the history
Refactor to take advantage of hiera and data bindings, update to 0.90.5-boxen1
  • Loading branch information
wfarr committed Oct 30, 2013
2 parents 0e90328 + b5a9093 commit 3fd1807
Show file tree
Hide file tree
Showing 19 changed files with 283 additions and 937 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ RESTful search engine. The `BOXEN_ELASTICSEARCH_PORT` and
include elasticsearch
```

This module supports data bindings via hiera.
See the parameters to the elasticsearch class for overrideable values.

## Required Puppet Modules

* `boxen`
* `boxen` >= 3.3.3
* `homebrew`
* `repository`
* `java`
Expand Down
6 changes: 3 additions & 3 deletions files/brews/elasticsearch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

class Elasticsearch < Formula
homepage 'http://www.elasticsearch.org'
url 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.3.tar.gz'
sha1 '24843192bee3afd19f5a958800e896153dbc3569'
version '0.90.3-boxen1'
url 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.tar.gz'
sha1 '8027a4ae1bef6876c7651b1590607c8ff6108820'
version '0.90.5-boxen1'

def cluster_name
"elasticsearch_#{ENV['USER']}"
Expand Down
71 changes: 55 additions & 16 deletions manifests/config.pp
Original file line number Diff line number Diff line change
@@ -1,18 +1,57 @@
# Internal: Configure elasticsearch.
# Internal: Manages the elasticsearch configuration files
#
# Examples
#
# include elasticsearch::config
class elasticsearch::config {
require boxen::config

$cluster = "elasticsearch_boxen_${::boxen_user}"
$configdir = "${boxen::config::configdir}/elasticsearch"
$configfile = "${configdir}/elasticsearch.yml"
$datadir = "${boxen::config::datadir}/elasticsearch"
$executable = "${boxen::config::homebrewdir}/bin/elasticsearch"
$logdir = "${boxen::config::logdir}/elasticsearch"
$logfile = "${logdir}/console.log"
$port = 19200
$transport = 19300

class elasticsearch::config(
$ensure = $elasticsearch::params::ensure,
$cluster = $elasticsearch::params::cluster,
$user = $elasticsearch::params::user,
$configdir = $elasticsearch::params::configdir,
$datadir = $elasticsearch::params::datadir,
$executable = $elasticsearch::params::executable,
$logdir = $elasticsearch::params::logdir,
$host = $elasticsearch::params::host,
$http_port = $elasticsearch::params::http_port,
$transport_port = $elasticsearch::params::transport_port,
) inherits elasticsearch::params {

$dir_ensure = $ensure ? {
present => directory,
default => absent,
}

File {
ensure => $ensure,
owner => $user
}

file {
[
$configdir,
$datadir,
$logdir
]:
ensure => $dir_ensure ;

"${configdir}/elasticsearch.yml":
content => template('elasticsearch/elasticsearch.yml.erb') ;

'/Library/LaunchDaemons/dev.elasticsearch.plist':
content => template('elasticsearch/dev.elasticsearch.plist.erb'),
group => 'wheel',
owner => 'root' ;
}

if $::operatingsystem == 'Darwin' {
boxen::env_script { 'elasticsearch':
ensure => $ensure,
content => template('elasticsearch/env.sh.erb'),
priority => 'lower',
}

include boxen::config

file { "${boxen::config::envdir}/elasticsearch.sh":
ensure => absent,
}
}
}
78 changes: 39 additions & 39 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -3,54 +3,54 @@
# Examples
#
# include elasticsearch
class elasticsearch {
require elasticsearch::config
class elasticsearch(
$ensure = $elasticsearch::params::ensure,

$version = $elasticsearch::params::version,
$package = $elasticsearch::params::package,

$cluster = $elasticsearch::params::cluster,
$user = $elasticsearch::params::user,
$configdir = $elasticsearch::params::configdir,
$datadir = $elasticsearch::params::datadir,
$executable = $elasticsearch::params::executable,
$logdir = $elasticsearch::params::logdir,
$host = $elasticsearch::params::host,
$http_port = $elasticsearch::params::http_port,
$transport_port = $elasticsearch::params::transport_port,

$enable = $elasticsearch::params::enable,
) inherits elasticsearch::params {

include java
require homebrew

file { [
$elasticsearch::config::configdir,
$elasticsearch::config::datadir,
$elasticsearch::config::logdir
]:
ensure => directory,
}

file { $elasticsearch::config::configfile:
content => template('elasticsearch/elasticsearch.yml.erb'),
require => File[$elasticsearch::config::configdir],
notify => Service['dev.elasticsearch'],
}
class { 'elasticsearch::package':
ensure => $ensure,

file { '/Library/LaunchDaemons/dev.elasticsearch.plist':
content => template('elasticsearch/dev.elasticsearch.plist.erb'),
group => 'wheel',
notify => Service['dev.elasticsearch'],
owner => 'root'
version => $version,
package => $package,
}

homebrew::formula { 'elasticsearch':
before => Package['boxen/brews/elasticsearch'],
}
~>
class { 'elasticsearch::config':
ensure => $ensure,

package { 'boxen/brews/elasticsearch':
ensure => '0.90.3-boxen1',
notify => Service['dev.elasticsearch'],
require => Class['java'],
cluster => $cluster,
user => $user,
configdir => $configdir,
datadir => $datadir,
executable => $executable,
logdir => $logdir,
host => $host,
http_port => $http_port,
transport_port => $transport_port,
}

service { 'dev.elasticsearch':
ensure => running,
require => Package['boxen/brews/elasticsearch']
}
~>
class { 'elasticsearch::service':
ensure => $ensure,

service { 'com.boxen.elasticsearch': # replaced by dev.elasticsearch
before => Service['dev.elasticsearch'],
enable => false
enable => $enable,
}

file { "${boxen::config::envdir}/elasticsearch.sh":
content => template('elasticsearch/env.sh.erb'),
require => File[$boxen::config::envdir]
}
}
22 changes: 22 additions & 0 deletions manifests/package.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Internal: Manages the elasticsearch package
#
class elasticsearch::package(
$ensure = $elasticsearch::params::ensure,
$version = $elasticsearch::params::version,
$package = $elasticsearch::params::package,
) inherits elasticsearch::params {

$package_ensure = $ensure ? {
present => $version,
default => installed,
}

if $::operatingsystem == 'Darwin' {
homebrew::formula { 'elasticsearch': }
}

package { $package:
ensure => $package_ensure,
}

}
33 changes: 33 additions & 0 deletions manifests/params.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Internal: Configure elasticsearch.

class elasticsearch::params {

case $::osfamily {
Darwin: {
include boxen::config

$ensure = 'present'

$version = '0.90.5-boxen1'
$package = 'boxen/brews/elasticsearch'

$cluster = "elasticsearch_boxen_${::boxen_user}"
$user = $::boxen_user
$configdir = "${boxen::config::configdir}/elasticsearch"
$datadir = "${boxen::config::datadir}/elasticsearch"
$executable = "${boxen::config::homebrewdir}/bin/elasticsearch"
$logdir = "${boxen::config::logdir}/elasticsearch"

$host = '127.0.0.1'
$http_port = 19200
$transport_port = 19300

$enable = true
}

default: {
fail("Unsupported operating system: ${::osfamily}")
}
}

}
24 changes: 24 additions & 0 deletions manifests/service.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Internal: Manages the elasticsearch service
#
class elasticsearch::service(
$ensure = $elasticsearch::params::ensure,
$enable = $elasticsearch::params::enable,
) inherits elasticsearch::params {

$service_ensure = $ensure ? {
present => running,
default => stopped,
}

service { 'com.boxen.elasticsearch':
ensure => stopped,
enable => false,
}

->
service { 'dev.elasticsearch':
ensure => $service_ensure,
enable => $enable,
}

}
18 changes: 17 additions & 1 deletion spec/classes/elasticsearch_config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@
let(:facts) { default_test_facts }

it do
should include_class('boxen::config')
%w(log config data).each do |d|
should contain_file("/test/boxen/#{d}/elasticsearch").with_ensure(:directory)
end

should contain_file("/test/boxen/config/elasticsearch/elasticsearch.yml")

should contain_file("/Library/LaunchDaemons/dev.elasticsearch.plist").with({
:group => "wheel",
:owner => "root",
})

should contain_boxen__env_script("elasticsearch").with({
:ensure => :present,
:priority => "lower",
})

should contain_file("/test/boxen/env.d/elasticsearch.sh").with_ensure(:absent)
end
end
11 changes: 11 additions & 0 deletions spec/classes/elasticsearch_package_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require "spec_helper"

describe "elasticsearch::package" do
let(:facts) { default_test_facts }

it do
should contain_homebrew__formula("elasticsearch")

should contain_package("boxen/brews/elasticsearch").with_ensure("0.90.5-boxen1")
end
end
13 changes: 13 additions & 0 deletions spec/classes/elasticsearch_service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require "spec_helper"

describe "elasticsearch::service" do
let(:facts) { default_test_facts }

it do
should contain_service("com.boxen.elasticsearch").with_ensure(:stopped)
should contain_service("dev.elasticsearch").with({
:ensure => :running,
:enable => true,
})
end
end
49 changes: 4 additions & 45 deletions spec/classes/elasticsearch_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,51 +4,10 @@
let(:facts) { default_test_facts }

it do
should include_class('elasticsearch::config')
should include_class('homebrew')
should include_class('java')
should include_class("elasticsearch::config")
should include_class("elasticsearch::package")
should include_class("elasticsearch::service")

should contain_homebrew__formula('elasticsearch').
with_before('Package[boxen/brews/elasticsearch]')

['config', 'data', 'log'].each do |dir|
should contain_file("/test/boxen/#{dir}/elasticsearch").with({
:ensure => 'directory'
})
end

should contain_file("/test/boxen/config/elasticsearch/elasticsearch.yml").with({
:content => File.read('spec/fixtures/elasticsearch.yml'),
:require => "File[/test/boxen/config/elasticsearch]",
:notify => 'Service[dev.elasticsearch]'
})

should contain_file('/Library/LaunchDaemons/dev.elasticsearch.plist').with({
:content => File.read('spec/fixtures/dev.elasticsearch.plist'),
:group => 'wheel',
:notify => 'Service[dev.elasticsearch]',
:owner => 'root',
})

should contain_package('boxen/brews/elasticsearch').with({
:ensure => '0.90.3-boxen1',
:notify => 'Service[dev.elasticsearch]',
:require => 'Class[Java]'
})

should contain_service('dev.elasticsearch').with({
:ensure => 'running',
:require => 'Package[boxen/brews/elasticsearch]',
})

should contain_service('com.boxen.elasticsearch').with({
:ensure => nil,
:before => 'Service[dev.elasticsearch]',
})

should contain_file('/test/boxen/env.d/elasticsearch.sh').with({
:content => File.read('spec/fixtures/elasticsearch.sh'),
:require => 'File[/test/boxen/env.d]'
})
should include_class("java")
end
end
2 changes: 1 addition & 1 deletion spec/fixtures/Puppetfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
mod 'boxen', '3.0.2', :github_tarball => 'boxen/puppet-boxen'
mod 'boxen', '3.3.3', :github_tarball => 'boxen/puppet-boxen'
mod 'homebrew', '1.4.1', :github_tarball => 'boxen/puppet-homebrew'
mod 'repository', '2.2.0', :github_tarball => 'boxen/puppet-repository'
mod 'java', '1.1.2', :github_tarball => 'boxen/puppet-java'
Expand Down
Loading

0 comments on commit 3fd1807

Please sign in to comment.