diff --git a/manifests/config.pp b/manifests/config.pp index 990409b..38f2306 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -1,80 +1,87 @@ # = Class: redis::config # # This class provides configuration for Redis. # class redis::config { File { owner => $::redis::config_owner, group => $::redis::config_group, mode => $::redis::config_file_mode, } file { $::redis::config_dir: ensure => directory, mode => $::redis::config_dir_mode, } file {$::redis::log_dir: ensure => directory, group => $::redis::service_group, mode => $::redis::log_dir_mode, owner => $::redis::service_user, } file {$::redis::workdir: ensure => directory, group => $::redis::service_group, mode => $::redis::workdir_mode, owner => $::redis::service_user, } if $::redis::default_install { redis::instance {'default': pid_file => $::redis::pid_file, log_file => $::redis::log_file, manage_service_file => $::redis::manage_service_file, unixsocket => $::redis::unixsocket, workdir => $::redis::workdir, } } if $::redis::ulimit { contain ::redis::ulimit } $service_provider_lookup = pick(getvar('service_provider'), false) if $service_provider_lookup != 'systemd' { case $::operatingsystem { 'Debian': { - $var_run_redis_mode = '2775' + if $::lsbdistcodename == 'wheezy' { + $var_run_redis_mode = '2755' + $var_run_redis_group = 'redis' + } else { + $var_run_redis_group = $::redis::config_group + $var_run_redis_mode = '2775' + } } default: { $var_run_redis_mode = '0755' + $var_run_redis_group = $::redis::config_group } } file { '/var/run/redis': ensure => 'directory', owner => $::redis::config_owner, - group => $::redis::config_group, + group => $var_run_redis_group, mode => $var_run_redis_mode, } } # Adjust /etc/default/redis-server on Debian systems case $::osfamily { 'Debian': { file { '/etc/default/redis-server': ensure => present, group => $::redis::config_group, mode => $::redis::config_file_mode, owner => $::redis::config_owner, } } default: { } } } diff --git a/spec/acceptance/nodesets/debian-7-docker.yml b/spec/acceptance/nodesets/debian-7-docker.yml index c9b7341..3735eab 100644 --- a/spec/acceptance/nodesets/debian-7-docker.yml +++ b/spec/acceptance/nodesets/debian-7-docker.yml @@ -1,16 +1,15 @@ HOSTS: debian-7: roles: - master platform: debian-7-amd64 image: debian:7 hypervisor: docker docker_cmd: ["/sbin/init"] docker_preserve_image: true docker_image_commands: - apt-get install -yq wget libssl-dev net-tools locales apt-transport-https software-properties-common - - locale-gen en en_US en_US.UTF-8 - - dpkg-reconfigure locales + - echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && DEBIAN_FRONTEND=noninteractive locale-gen en_US.UTF-8 && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales && DEBIAN_FRONTEND=noninteractive /usr/sbin/update-locale LANG=en_US.UTF-8 CONFIG: type: foss log_level: debug diff --git a/spec/classes/redis_debian_wheezy_spec.rb b/spec/classes/redis_debian_wheezy_spec.rb new file mode 100644 index 0000000..5665b9f --- /dev/null +++ b/spec/classes/redis_debian_wheezy_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe 'redis' do + context 'on Debian Wheezy' do + + let(:facts) { + debian_wheezy_facts + } + + context 'should set Wheezy specific values' do + + context 'should set redis rundir correctly to Wheezy requirements' do + it { should contain_file('/var/run/redis').with('mode' => '2755') } + it { should contain_file('/var/run/redis').with('group' => 'redis') } + end + end + end + +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 2e1c732..7b96623 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,150 +1,163 @@ require 'rubygems' require 'puppetlabs_spec_helper/module_spec_helper' require 'rspec-puppet-facts' include RspecPuppetFacts require 'puppet/indirector/catalog/compiler' # Magic to add a catalog.exported_resources accessor class Puppet::Resource::Catalog::Compiler alias_method :filter_exclude_exported_resources, :filter def filter(catalog) filter_exclude_exported_resources(catalog).tap do |filtered| # Every time we filter a catalog, add a .exported_resources to it. filtered.define_singleton_method(:exported_resources) do # The block passed to filter returns `false` if it wants to keep a resource. Go figure. catalog.filter { |r| !r.exported? } end end end end module Support module ExportedResources # Get exported resources as a catalog. Compatible with all catalog matchers, e.g. # `expect(exported_resources).to contain_myexportedresource('name').with_param('value')` def exported_resources # Catalog matchers expect something that can receive .call proc { subject.call.exported_resources } end end end def get_spec_fixtures_dir spec_dir = File.expand_path(File.dirname(__FILE__) + '/fixtures') raise "The directory #{spec_dir} does not exist" unless Dir.exists? spec_dir spec_dir end def read_fixture_file filename filename = get_spec_fixtures_dir + "/#{filename}" raise "The fixture file #{filename} doesn't exist" unless File.exists? filename File.read(filename) end def manifest_vars vars = {} case facts[:osfamily].to_s when 'RedHat' vars[:package_name] = 'redis' vars[:service_name] = 'redis' vars[:config_file_orig] = '/etc/redis.conf.puppet' vars[:ppa_repo] = nil when 'FreeBSD', vars[:package_name] = 'redis' vars[:service_name] = 'redis' vars[:config_file_orig] = '/usr/local/etc/redis.conf.puppet' vars[:ppa_repo] = nil when 'Debian' vars[:package_name] = 'redis-server' vars[:service_name] = 'redis-server' vars[:config_file_orig] = '/etc/redis/redis.conf.puppet' vars[:ppa_repo] = 'ppa:chris-lea/redis-server' when 'Archlinux' vars[:package_name] = 'redis' vars[:service_name] = 'redis' vars[:config_file] = '/etc/redis/redis.conf' vars[:config_file_orig] = '/etc/redis/redis.conf.puppet' vars[:ppa_repo] = nil end vars end def centos_facts { :operatingsystem => 'CentOS', :osfamily => 'RedHat', :puppetversion => '4.5.2', } end def debian_facts { :operatingsystem => 'Debian', :osfamily => 'Debian', :operatingsystemmajrelease => '8', :puppetversion => '4.5.2', + :lsbdistcodename => 'jessie', } end def freebsd_facts { :operatingsystem => 'FreeBSD', :osfamily => 'FreeBSD', :puppetversion => '4.5.2', } end def centos_6_facts { :operatingsystem => 'CentOS', :osfamily => 'RedHat', :operatingsystemmajrelease => '6', :puppetversion => '4.5.2', } end def centos_7_facts { :operatingsystem => 'CentOS', :osfamily => 'RedHat', :operatingsystemmajrelease => '7', :puppetversion => '4.5.2', } end +def debian_wheezy_facts + { + :operatingsystem => 'Debian', + :osfamily => 'Debian', + :operatingsystemmajrelease => '8', + :puppetversion => '4.5.2', + :lsbdistcodename => 'wheezy', + } +end + def ubuntu_1404_facts { :operatingsystem => 'Ubuntu', :osfamily => 'Debian', :operatingsystemmajrelease => '14.04', - :puppetversion => '4.5.2' + :puppetversion => '4.5.2', + :lsbdistcodename => 'trusty', } end def ubuntu_1604_facts { :operatingsystem => 'Ubuntu', :osfamily => 'Debian', :operatingsystemmajrelease => '16.04', - :puppetversion => '4.5.2' + :puppetversion => '4.5.2', + :lsbdistcodename => 'xenial', } end def archlinux_facts { :operatingsystem => 'Archlinux', :osfamily => 'Archlinux', :puppetversion => '4.5.2', } end # Include code coverage report for all our specs at_exit { RSpec::Puppet::Coverage.report! }