4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ Gemfile.lock
doc
log/
pkg
spec/fixtures
spec/fixtures/manifests/
spec/fixtures/modules/
.bundle/
4 changes: 4 additions & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
--format d
--color
--tty
--backtrace
66 changes: 29 additions & 37 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
---
language: ruby
sudo: false

rvm:
- 1.9.3
- 2.0.0
- 2.1.3

language: ruby
bundler_args: --without system_tests
script: "bundle exec rake validate && bundle exec rake lint && bundle exec rake spec SPEC_OPTS='--format documentation'"
matrix:
allow_failures:
- env: PUPPET_VERSION="3.7" FUTURE_PARSER="yes"
- env: PUPPET_VERSION="3.8" FUTURE_PARSER="yes"

before_install:
- 'gem install bundler'

script:
- bundle install
- bundle update
- bundle exec rake

env:
- PUPPET_VERSION="3.0"
- PUPPET_VERSION="3.1"
- PUPPET_VERSION="3.2"
- PUPPET_VERSION="3.3"
- PUPPET_VERSION="3.4"
- PUPPET_VERSION="3.5"
- PUPPET_VERSION="3.6"
- PUPPET_VERSION="3.7"
- PUPPET_VERSION="3.7" FUTURE_PARSER="yes"
- PUPPET_VERSION="3.8"
- PUPPET_VERSION="3.8" FUTURE_PARSER="yes"
- PUPPET_VERSION="4.0"
- PUPPET_VERSION="4.1"
- PUPPET_VERSION="4.2"
- PUPPET_VERSION="4.3"
- PUPPET_VERSION="4.4"
- PUPPET_VERSION="4.5"
fast_finish: true
include:
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.0" FUTURE_PARSER="yes" ORDERING="random"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.0" STRICT_VARIABLES="yes" ORDERING="random"
- rvm: 2.1.9
env: PUPPET_GEM_VERSION="~> 4.0" STRICT_VARIABLES="yes" ORDERING="random"
- rvm: '2.1'
sudo: required
services: docker
env: PUPPET_INSTALL_VERSION="1.5.2" PUPPET_INSTALL_TYPE=agent BEAKER_set="centos-7-docker"
script: bundle exec rake acceptance
bundler_args: --without development
- rvm: '2.1'
sudo: required
services: docker
env: PUPPET_INSTALL_VERSION="1.5.2" PUPPET_INSTALL_TYPE=agent BEAKER_set="debian-8-docker"
script: bundle exec rake acceptance
bundler_args: --without development
- rvm: '2.1'
sudo: required
services: docker
env: PUPPET_INSTALL_VERSION="1.5.2" PUPPET_INSTALL_TYPE=agent BEAKER_set="ubuntu-1604-docker"
script: bundle exec rake acceptance
bundler_args: --without development
62 changes: 39 additions & 23 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,30 +1,46 @@
source 'https://rubygems.org'
source ENV['GEM_SOURCE'] || "https://rubygems.org"

# special dependencies for Ruby 1.8
# since there are still several OSes with it
if RUBY_VERSION =~ /^1\.8\./
gem 'rspec-core', '~> 3.1.7'
gem 'nokogiri', '~> 1.5.0'
def location_for(place, fake_version = nil)
if place =~ /^(git[:@][^#]*)#(.*)/
[fake_version, { :git => $1, :branch => $2, :require => false }].compact
elsif place =~ /^file:\/\/(.*)/
['>= 0', { :path => File.expand_path($1), :require => false }]
else
[place, { :require => false }]
end
end

puppetversion = ENV.key?('PUPPET_VERSION') ? "~> #{ENV['PUPPET_VERSION']}" : ['>= 3.2.1']
gem 'puppet', puppetversion

if puppetversion =~ /^3/
## rspec-hiera-puppet is puppet 3 only
gem 'rspec-hiera-puppet', '>=1.0.0'
group :test do
gem 'puppetlabs_spec_helper', '~> 1.2.2', :require => false
gem 'rspec-puppet', :require => false, :git => 'https://github.com/rodjek/rspec-puppet.git'
gem 'rspec-puppet-facts', :require => false
gem 'rspec-puppet-utils', :require => false
gem 'puppet-lint-absolute_classname-check', :require => false
gem 'puppet-lint-leading_zero-check', :require => false
gem 'puppet-lint-trailing_comma-check', :require => false
gem 'puppet-lint-version_comparison-check', :require => false
gem 'puppet-lint-classes_and_types_beginning_with_digits-check', :require => false
gem 'puppet-lint-unquoted_string-check', :require => false
gem 'puppet-lint-variable_contains_upcase', :require => false
gem 'metadata-json-lint', :require => false
gem 'puppet-strings', '0.4.0', :require => false
gem 'puppet_facts', :require => false
gem 'rubocop-rspec', '~> 1.6', :require => false if RUBY_VERSION >= '2.3.0'
gem 'json_pure', '<= 2.0.1', :require => false if RUBY_VERSION < '2.0.0'
gem 'safe_yaml', '~> 1.0.4', :require => false
gem 'listen', '<= 3.0.6', :require => false
gem 'puppet-syntax', :require => false, git: 'https://github.com/gds-operations/puppet-syntax.git'
gem 'pry'
gem 'rb-readline'
end

facterversion = ENV.key?('FACTER_VERSION') ? "~> #{ENV['FACTER_VERSION']}" : ['>= 1.7.1']

gem 'facter', facterversion
group :system_tests do
gem "beaker", '2.41.0', :require => false
gem "beaker-rspec", '5.6.0', :require => false
gem 'beaker-puppet_install_helper', :require => false
end

gem 'rake'
gem 'rspec'
gem 'puppet-lint', '>=0.3.2'
gem 'rspec-puppet', '>=0.1.6'
gem 'puppetlabs_spec_helper', '>=0.4.1'
ENV['PUPPET_GEM_VERSION'].nil? ? puppetversion = '~> 4.0' : puppetversion = ENV['PUPPET_GEM_VERSION'].to_s
gem 'puppet', puppetversion, :require => false, :groups => [:test]

gem 'beaker-rspec'
gem 'bundler'
gem 'vagrant-wrapper'
# vim: syntax=ruby
38 changes: 27 additions & 11 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,16 +1,32 @@
require 'rake'
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
require 'puppet-syntax/tasks/puppet-syntax'

RSpec::Core::RakeTask.new(:spec_verbose) do |t|
t.pattern = 'spec/*/*_spec.rb'
t.rspec_opts = File.read('spec/spec.opts').chomp || ""
end
PuppetLint.configuration.fail_on_warnings
PuppetLint.configuration.send('relative')
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
PuppetLint.configuration.send('disable_class_parameter_defaults')
PuppetLint.configuration.send('disable_documentation')
PuppetLint.configuration.send('disable_single_quote_string_with_variables')
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"]

task :test do
Rake::Task[:spec_prep].invoke
Rake::Task[:spec_verbose].invoke
Rake::Task[:spec_clean].invoke
end
exclude_paths = [
"pkg/**/*",
"vendor/**/*",
"spec/**/*",
]
PuppetLint.configuration.ignore_paths = exclude_paths
PuppetSyntax.exclude_paths = exclude_paths

desc "Run acceptance tests"
RSpec::Core::RakeTask.new(:acceptance) do |t|
t.pattern = 'spec/acceptance'
end

task :default => [:spec, :lint]
desc "Run syntax, lint, and spec tests."
task :test => [
:syntax,
:lint,
:spec,
]
13 changes: 13 additions & 0 deletions lib/facter/redis_server_version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Fact: redis_server_version
#
# Purpose: Retrieve redis-server version if installed
#
Facter.add(:redis_server_version) do
setcode do
if Facter::Util::Resolution.which('redis-server')
redis_server_version_output = Facter::Util::Resolution.exec('redis-server -v')
# Redis server v=2.8.17 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=4c1d5710660b9479
redis_server_version_output.match(/Redis server v=([\w\.]+).+/)[1]
end
end
end
17 changes: 15 additions & 2 deletions manifests/config.pp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
$repl_timeout = $::redis::repl_timeout
$requirepass = $::redis::requirepass
$save_db_to_disk = $::redis::save_db_to_disk
$save_db_to_disk_interval = $::redis::save_db_to_disk_interval
$set_max_intset_entries = $::redis::set_max_intset_entries
$slave_priority = $::redis::slave_priority
$slave_read_only = $::redis::slave_read_only
Expand All @@ -71,7 +72,7 @@
owner => $::redis::config_owner,
group => $::redis::config_group,
mode => $::redis::config_file_mode,
notify => Service[$::redis::service_name]
notify => Service[$::redis::service_name],
}
} else {
File {
Expand All @@ -95,6 +96,12 @@
group => $::redis::service_group,
mode => $::redis::log_dir_mode,
owner => $::redis::service_user;

$::redis::workdir:
ensure => directory,
group => $::redis::service_group,
mode => $::redis::workdir_mode,
owner => $::redis::service_user;
}

exec {
Expand All @@ -114,6 +121,13 @@
owner => $::redis::config_owner,
}

file { '/var/run/redis':
ensure => 'directory',
owner => $::redis::config_owner,
group => $::redis::config_group,
mode => '0755',
}

if $::redis::ulimit {
augeas { 'redis ulimit' :
context => '/files/etc/default/redis-server',
Expand All @@ -126,4 +140,3 @@
}
}
}

31 changes: 27 additions & 4 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,11 @@
#
# Default: false
#
# [*manage_package*]
# Enable/disable management of package
#
# Default: true
#
# [*masterauth*]
# If the master is password protected (using the "requirepass" configuration
# directive below) it is possible to tell the slave to authenticate before
Expand Down Expand Up @@ -310,6 +315,16 @@
#
# Default: true
#
#[*save_db_to_disk_interval*]
# save the dataset every N seconds if there are at least M changes in the dataset
#
# Default: {'900' =>'1', '300' => '10', '60' => '10000'}
#
# Produces in config file;
# save 900 1
# save 300 10
# save 60 10000
#
# [*service_manage*]
# Specify if the service should be part of the catalog.
#
Expand Down Expand Up @@ -466,6 +481,11 @@
#
# Default: /var/lib/redis/
#
# [*workdir_mode*]
# Adjust mode for data directory.
#
# Default: 0750
#
# [*zset_max_ziplist_entries*]
# Set max entries for sorted sets.
#
Expand Down Expand Up @@ -537,6 +557,7 @@
$log_dir_mode = $::redis::params::log_dir_mode,
$log_file = $::redis::params::log_file,
$log_level = $::redis::params::log_level,
$manage_package = $::redis::params::manage_package,
$manage_repo = $::redis::params::manage_repo,
$masterauth = $::redis::params::masterauth,
$maxclients = $::redis::params::maxclients,
Expand All @@ -561,6 +582,7 @@
$repl_timeout = $::redis::params::repl_timeout,
$requirepass = $::redis::params::requirepass,
$save_db_to_disk = $::redis::params::save_db_to_disk,
$save_db_to_disk_interval = $::redis::params::save_db_to_disk_interval,
$service_enable = $::redis::params::service_enable,
$service_ensure = $::redis::params::service_ensure,
$service_group = $::redis::params::service_group,
Expand All @@ -587,6 +609,7 @@
$unixsocketperm = $::redis::params::unixsocketperm,
$ulimit = $::redis::params::ulimit,
$workdir = $::redis::params::workdir,
$workdir_mode = $::redis::params::workdir_mode,
$zset_max_ziplist_entries = $::redis::params::zset_max_ziplist_entries,
$zset_max_ziplist_value = $::redis::params::zset_max_ziplist_value,
$cluster_enabled = $::redis::params::cluster_enabled,
Expand All @@ -596,10 +619,10 @@
anchor { 'redis::begin': }
anchor { 'redis::end': }

include redis::preinstall
include redis::install
include redis::config
include redis::service
include ::redis::preinstall
include ::redis::install
include ::redis::config
include ::redis::service

if $::redis::notify_service {
Anchor['redis::begin'] ->
Expand Down
8 changes: 4 additions & 4 deletions manifests/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# This class installs the application.
#
class redis::install {
unless defined(Package['$::redis::package_name']) {
ensure_resource('package', $::redis::package_name, {
'ensure' => $::redis::package_ensure
})
if $::redis::manage_package {
package { $::redis::package_name:
ensure => $::redis::package_ensure,
}
}
}

Loading