Page MenuHomeSoftware Heritage

No OneTemporary

diff --git a/Modulefile b/Modulefile
index f34d179..61e6fa3 100644
--- a/Modulefile
+++ b/Modulefile
@@ -1,11 +1,11 @@
name 'deric-zookeeper'
version '0.2.5'
source 'https://github.com/deric/puppet-zookeeper'
author 'Tomas Barton'
license 'Apache License, Version 2.0'
summary 'Module for managing Apache Zookeeper'
description 'ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.'
project_page 'https://github.com/deric/puppet-zookeeper'
dependency 'puppetlabs/stdlib', '>= 0.1.6'
-dependency 'puppetlabs/concat', '>=1.0.0'
+dependency 'richardc/datacat', '>=0.4.0'
diff --git a/Puppetfile b/Puppetfile
index 8edc2ca..0c0dfcd 100644
--- a/Puppetfile
+++ b/Puppetfile
@@ -1,4 +1,4 @@
forge 'http://forge.puppetlabs.com'
mod 'puppetlabs/stdlib', '>=0.1.6'
-mod 'puppetlabs/concat', '>=1.0.0'
+mod 'richardc/datacat', '>=0.4.0'
diff --git a/Puppetfile.lock b/Puppetfile.lock
index 4874f3a..fd9756d 100644
--- a/Puppetfile.lock
+++ b/Puppetfile.lock
@@ -1,11 +1,10 @@
FORGE
remote: http://forge.puppetlabs.com
specs:
- puppetlabs/concat (1.1.0-rc1)
- puppetlabs/stdlib (>= 3.0.0)
puppetlabs/stdlib (4.1.0)
+ richardc/datacat (0.4.3)
DEPENDENCIES
- puppetlabs/concat (>= 1.0.0)
puppetlabs/stdlib (>= 0.1.6)
+ richardc/datacat (>= 0.4.0)
diff --git a/manifests/config.pp b/manifests/config.pp
index cc48bcf..9501dc3 100644
--- a/manifests/config.pp
+++ b/manifests/config.pp
@@ -1,126 +1,121 @@
# Class: zookeeper::config
#
# This module manages the zookeeper configuration directories
#
# Parameters:
# [* id *] zookeeper instance id: between 1 and 255
#
# [* servers *] an Array - specify all zookeeper servers
# The fist port is used by followers to connect to the leader
# The second one is used for leader election
# server.1=zookeeper1:2888:3888
# server.2=zookeeper2:2888:3888
# server.3=zookeeper3:2888:3888
#
#
# Actions: None
#
# Requires: zookeeper::install, zookeeper
#
# Sample Usage: include zookeeper::config
#
class zookeeper::config(
$id = '1',
$datastore = '/var/lib/zookeeper',
$client_ip = $::ipaddress,
$client_port = 2181,
$election_port = 2888,
$leader_port = 3888,
$snap_count = 10000,
$log_dir = '/var/log/zookeeper',
$cfg_dir = '/etc/zookeeper/conf',
$user = 'zookeeper',
$group = 'zookeeper',
$java_bin = '/usr/bin/java',
$java_opts = '',
$pid_dir = '/var/run/zookeeper',
$pid_file = '$PIDDIR/zookeeper.pid',
$zoo_main = 'org.apache.zookeeper.server.quorum.QuorumPeerMain',
$log4j_prop = 'INFO,ROLLINGFILE',
$servers = [''],
# since zookeeper 3.4, for earlier version cron task might be used
$snap_retain_count = 3,
# interval in hours, purging enabled when >= 1
$purge_interval = 0,
# log4j properties
$rollingfile_threshold = 'ERROR',
$tracefile_threshold = 'TRACE',
$max_allowed_connections = 10,
$export_tag = 'zookeeper',
) {
require zookeeper::install
include concat::setup
Concat::Fragment <<| tag == $export_tag |>>
file { $cfg_dir:
ensure => directory,
owner => $user,
group => $group,
recurse => true,
mode => '0644',
}
file { $log_dir:
ensure => directory,
owner => $user,
group => $group,
recurse => true,
mode => '0644',
}
file { $datastore:
ensure => directory,
owner => $user,
group => $group,
mode => '0644',
recurse => true,
}
file { "${cfg_dir}/myid":
ensure => file,
content => template('zookeeper/conf/myid.erb'),
owner => $user,
group => $group,
mode => '0644',
require => File[$cfg_dir],
notify => Class['zookeeper::service'],
}
file { "${cfg_dir}/zoo.cfg":
owner => $user,
group => $group,
mode => '0644',
content => template('zookeeper/conf/zoo.cfg.erb'),
notify => Class['zookeeper::service'],
}
file { "${cfg_dir}/environment":
owner => $user,
group => $group,
mode => '0644',
content => template('zookeeper/conf/environment.erb'),
notify => Class['zookeeper::service'],
}
file { "${cfg_dir}/log4j.properties":
owner => $user,
group => $group,
mode => '0644',
content => template('zookeeper/conf/log4j.properties.erb'),
notify => Class['zookeeper::service'],
}
- @@concat::fragment{ "zookeeper_${client_ip}":
- target => "${cfg_dir}/quorum.yml",
- content => " - 'server.${id}=${client_ip}:${election_port}:${leader_port}'\n",
- tag => 'zookeeper',
- }
-
- concat{ "${cfg_dir}/quorum.yml":
- owner => root,
- group => 0,
- mode => '0644',
- require => File[$cfg_dir],
+ # keep track of all hosts in a cluster
+ zookeeper::host { $client_ip:
+ id => $id,
+ client_ip => $client_ip,
+ election_port => $election_port,
+ leader_port => $leader_port,
}
}
diff --git a/manifests/host.pp b/manifests/host.pp
new file mode 100644
index 0000000..3a4b19e
--- /dev/null
+++ b/manifests/host.pp
@@ -0,0 +1,13 @@
+# zookeeper host
+
+define zookeeper::host($hostname = $title, $id, $client_ip, $election_port, $leader_port) {
+ datacat_fragment { "${hostname}":
+ target => '/etc/zookeeper/conf/quorum.conf',
+ data => {
+ 'id' => $id,
+ 'client_ip' => $client_ip,
+ 'election_port' => $election_port,
+ 'leader_port' => $leader_port,
+ },
+ }
+}
\ No newline at end of file
diff --git a/spec/classes/config_spec.rb b/spec/classes/config_spec.rb
index b4682d3..7af85ea 100644
--- a/spec/classes/config_spec.rb
+++ b/spec/classes/config_spec.rb
@@ -1,104 +1,109 @@
require 'spec_helper'
describe 'zookeeper::config' do
shared_examples 'debian-install' do |os, codename|
let(:facts) {{
:operatingsystem => os,
:osfamily => 'Debian',
:lsbdistcodename => codename,
}}
it { should contain_file(cfg_dir).with({
'ensure' => 'directory',
'owner' => user,
'group' => group,
}) }
it { should contain_file(log_dir).with({
'ensure' => 'directory',
'owner' => user,
'group' => group,
}) }
it { should contain_file(id_file).with({
'ensure' => 'file',
'owner' => user,
'group' => group,
}).with_content(myid) }
end
context 'on debian-like system' do
let(:user) { 'zookeeper' }
let(:group) { 'zookeeper' }
let(:cfg_dir) { '/etc/zookeeper/conf' }
let(:log_dir) { '/var/lib/zookeeper' }
let(:id_file) { '/etc/zookeeper/conf/myid' }
let(:myid) { /1/ }
it_behaves_like 'debian-install', 'Debian', 'wheezy'
end
context 'custom parameters' do
# set custom params
let(:params) { {
:id => '2',
:user => 'zoo',
:group => 'zoo',
:cfg_dir => '/var/lib/zookeeper/conf',
:log_dir => '/var/lib/zookeeper/log',
} }
let(:user) { 'zoo' }
let(:group) { 'zoo' }
let(:cfg_dir) { '/var/lib/zookeeper/conf' }
let(:log_dir) { '/var/lib/zookeeper/log' }
let(:id_file) { '/var/lib/zookeeper/conf/myid' }
let(:myid) { /2/ }
it_behaves_like 'debian-install', 'Debian', 'wheezy'
end
context 'extra parameters' do
snap_cnt = 15000
# set custom params
let(:params) { {
:log4j_prop => 'INFO,ROLLINGFILE',
:snap_count => snap_cnt,
} }
it {
should contain_file('/etc/zookeeper/conf/environment').with_content(/INFO,ROLLINGFILE/)
}
it {
should contain_file('/etc/zookeeper/conf/zoo.cfg').with_content(/snapCount=15000/)
}
end
context 'max allowed connections' do
max_conn = 15
let(:params) {{
:max_allowed_connections => max_conn
}}
it { should contain_file(
'/etc/zookeeper/conf/zoo.cfg'
).with_content(/maxClientCnxns=#{max_conn}/) }
end
context 'quorum file' do
ipaddress = '192.168.1.1'
let(:facts) {{
:ipaddress => ipaddress
}}
- it { should contain_file(
- '/etc/zookeeper/conf/quorum.yml'
+ it { should create_datacat_fragment('192.168.1.1').with_data(
+ {"id"=>"1", "client_ip"=>"192.168.1.1", "election_port"=>"2888", "leader_port"=>"3888"}
)}
- it { should contain_concat__fragment("zookeeper_#{ipaddress}") }
+ # it { should contain_file(
+ # '/etc/zookeeper/conf/quorum.yml'
+ # )}
+ #it { should contain_datacat__fragment("#{ipaddress}") }
+
+ # it { should contain_concat__fragment("zookeeper_#{ipaddress}") }
end
end
diff --git a/spec/defines/host_spec.rb b/spec/defines/host_spec.rb
new file mode 100644
index 0000000..ab42812
--- /dev/null
+++ b/spec/defines/host_spec.rb
@@ -0,0 +1,18 @@
+
+require 'spec_helper'
+
+describe 'zookeeper::host' do
+
+ let(:title) { 'localhost' }
+ let(:params) {{
+ :id => '1',
+ :client_ip => '192.168.1.1',
+ :election_port => 2222,
+ :leader_port => 3333,
+ }}
+
+ it { should contain_datacat_fragment('localhost') }
+ #it { should contain_datacat__collector('localhost') }
+
+end
+
diff --git a/templates/conf/quorum.conf.erb b/templates/conf/quorum.conf.erb
new file mode 100644
index 0000000..dc32640
--- /dev/null
+++ b/templates/conf/quorum.conf.erb
@@ -0,0 +1,7 @@
+# quorum conf
+<% @data.keys.sort.each do |host| %>
+- <%= host.client_ip %>
+ id: <%= host.id %>
+ election_port: <%= host.election_port %>
+ leader_port: <%= host.leader_port %>
+<% end %>

File Metadata

Mime Type
text/x-diff
Expires
Thu, Sep 18, 4:37 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3331514

Event Timeline