-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #197 from eglynn/master
utomatic update :: advance puppet-redis to 1.0.2
- Loading branch information
Showing
7 changed files
with
311 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
# = Class: redis::sentinel | ||
# | ||
# This class install redis-sentinel | ||
# | ||
# == Parameters: | ||
# | ||
# [*config_file*] | ||
# The location and name of the sentinel config file. | ||
# | ||
# Default for deb: /etc/redis/redis-sentinel.conf | ||
# Default for rpm: /etc/redis-sentinel.conf | ||
# | ||
# [*config_file_orig*] | ||
# The location and name of a config file that provides the source | ||
# of the sentinel config file. Two different files are needed | ||
# because sentinel itself writes to its own config file and we do | ||
# not want override that when puppet is run unless there are | ||
# changes from the manifests. | ||
# | ||
# Default for deb: /etc/redis/redis-sentinel.conf.puppet | ||
# Default for rpm: /etc/redis-sentinel.conf.puppet | ||
# | ||
# [*config_file_mode*] | ||
# Permissions of config file. | ||
# | ||
# Default: 0644 | ||
# | ||
# [*conf_template*] | ||
# Define which template to use. | ||
# | ||
# Default: redis/redis-sentinel.conf.erb | ||
# | ||
# [*down_after*] | ||
# Number of milliseconds the master (or any attached slave or sentinel) | ||
# should be unreachable (as in, not acceptable reply to PING, continuously, | ||
# for the specified period) in order to consider it in S_DOWN state. | ||
# | ||
# Default: 30000 | ||
# | ||
# [*failover_timeout*] | ||
# Specify the failover timeout in milliseconds. | ||
# | ||
# Default: 180000 | ||
# | ||
# [*log_file*] | ||
# Specify where to write log entries. | ||
# | ||
# Default: /var/log/redis/redis.log | ||
# | ||
# [*master_name*] | ||
# Specify the name of the master redis server. | ||
# The valid charset is A-z 0-9 and the three characters ".-_". | ||
# | ||
# Default: mymaster | ||
# | ||
# [*redis_host*] | ||
# Specify the bound host of the master redis server. | ||
# | ||
# Default: 127.0.0.1 | ||
# | ||
# [*redis_port*] | ||
# Specify the port of the master redis server. | ||
# | ||
# Default: 6379 | ||
# | ||
# [*parallel_sync*] | ||
# How many slaves can be reconfigured at the same time to use a | ||
# new master after a failover. | ||
# | ||
# Default: 1 | ||
# | ||
# [*quorum*] | ||
# Number of sentinels that must agree that a master is down to | ||
# signal sdown state. | ||
# | ||
# Default: 2 | ||
# | ||
# [*sentinel_port*] | ||
# The port of sentinel server. | ||
# | ||
# Default: 26379 | ||
# | ||
# [*service_group*] | ||
# The group of the config file. | ||
# | ||
# Default: redis | ||
# | ||
# [*service_name*] | ||
# The name of the service (for puppet to manage). | ||
# | ||
# Default: redis-sentinel | ||
# | ||
# [*service_owner*] | ||
# The owner of the config file. | ||
# | ||
# Default: redis | ||
# | ||
# [*working_dir*] | ||
# The directory into which sentinel will change to avoid mount | ||
# conflicts. | ||
# | ||
# Default: /tmp | ||
# | ||
# == Actions: | ||
# - Install and configure Redis Sentinel | ||
# | ||
# == Sample Usage: | ||
# | ||
# class { 'redis::sentinel': } | ||
# | ||
# class {'redis::sentinel': | ||
# down_after => 80000, | ||
# log_file => '/var/log/redis/sentinel.log', | ||
# } | ||
# | ||
class redis::sentinel ( | ||
$config_file = $::redis::params::sentinel_config_file, | ||
$config_file_orig = $::redis::params::sentinel_config_file_orig, | ||
$config_file_mode = $::redis::params::sentinel_config_file_mode, | ||
$conf_template = $::redis::params::sentinel_conf_template, | ||
$down_after = $::redis::params::sentinel_down_after, | ||
$failover_timeout = $::redis::params::sentinel_failover_timeout, | ||
$log_file = $::redis::params::log_file, | ||
$master_name = $::redis::params::sentinel_master_name, | ||
$redis_host = $::redis::params::bind, | ||
$redis_port = $::redis::params::port, | ||
$parallel_sync = $::redis::params::sentinel_parallel_sync, | ||
$quorum = $::redis::params::sentinel_quorum, | ||
$sentinel_port = $::redis::params::sentinel_port, | ||
$service_group = $::redis::params::service_group, | ||
$service_name = $::redis::params::sentinel_service_name, | ||
$service_user = $::redis::params::service_user, | ||
$working_dir = $::redis::params::sentinel_working_dir, | ||
) inherits redis::params { | ||
|
||
file { | ||
$config_file_orig: | ||
ensure => present, | ||
content => template($conf_template); | ||
|
||
$config_file: | ||
owner => $service_user, | ||
group => $service_group, | ||
mode => $config_file_mode; | ||
} | ||
|
||
exec { | ||
"cp ${config_file_orig} ${config_file}": | ||
path => '/usr/bin:/bin', | ||
subscribe => File[$config_file_orig], | ||
notify => Service[$service_name], | ||
refreshonly => true; | ||
} | ||
|
||
service { $service_name: | ||
ensure => $::redis::params::service_ensure, | ||
enable => $::redis::params::service_enable, | ||
hasrestart => $::redis::params::service_hasrestart, | ||
hasstatus => $::redis::params::service_hasstatus, | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
require 'spec_helper' | ||
|
||
$expected_noparams_content = <<EOF | ||
port 26379 | ||
dir /tmp | ||
sentinel monitor mymaster 127.0.0.1 6379 2 | ||
sentinel down-after-milliseconds mymaster 30000 | ||
sentinel parallel-syncs mymaster 1 | ||
sentinel failover-timeout mymaster 180000 | ||
logfile /var/log/redis/redis.log | ||
EOF | ||
|
||
$expected_params_content = <<EOF | ||
port 26379 | ||
dir /tmp | ||
sentinel monitor cow 127.0.0.1 6379 2 | ||
sentinel down-after-milliseconds cow 6000 | ||
sentinel parallel-syncs cow 1 | ||
sentinel failover-timeout cow 28000 | ||
logfile /tmp/barn-sentinel.log | ||
EOF | ||
|
||
describe 'redis::sentinel', :type => :class do | ||
let (:facts) { debian_facts } | ||
|
||
describe 'without parameters' do | ||
|
||
it { should create_class('redis::sentinel') } | ||
|
||
it { should contain_file('/etc/redis/redis-sentinel.conf.puppet').with( | ||
'ensure' => 'present', | ||
'content' => $expected_noparams_content | ||
) | ||
} | ||
|
||
it { should contain_file('/etc/redis/redis-sentinel.conf').with( | ||
'mode' => '0644' | ||
) | ||
} | ||
|
||
it { should contain_service('redis-sentinel').with( | ||
'ensure' => 'running', | ||
'enable' => 'true', | ||
'hasrestart' => 'true', | ||
'hasstatus' => 'false' | ||
) | ||
} | ||
|
||
end | ||
|
||
describe 'with custom parameters' do | ||
let (:params) { | ||
{ | ||
:master_name => 'cow', | ||
:down_after => 6000, | ||
:log_file => '/tmp/barn-sentinel.log', | ||
:failover_timeout => 28000 | ||
} | ||
} | ||
|
||
it { should create_class('redis::sentinel') } | ||
|
||
it { should contain_file('/etc/redis/redis-sentinel.conf.puppet').with( | ||
'content' => $expected_params_content | ||
) | ||
} | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
port <%= @sentinel_port %> | ||
dir <%= @working_dir %> | ||
|
||
sentinel monitor <%= @master_name %> <%= @redis_host %> <%= @redis_port %> <%= @quorum %> | ||
sentinel down-after-milliseconds <%= @master_name %> <%= @down_after %> | ||
sentinel parallel-syncs <%= @master_name %> <%= @parallel_sync %> | ||
sentinel failover-timeout <%= @master_name %> <%= @failover_timeout %> | ||
|
||
logfile <%= @log_file %> |