diff --git a/.fixtures.yml b/.fixtures.yml index 325af1a..f8b6dce 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -1,12 +1,12 @@ fixtures: repositories: - "stdlib": - repo: "git://github.com/puppetlabs/puppetlabs-stdlib.git" - ref: "3.2.0" - "common": - repo: "git://github.com/ghoneycutt/puppet-module-common.git" - ref: "v1.0.2" - "firewall": - repo: "git://github.com/puppetlabs/puppetlabs-firewall.git" + stdlib: + repo: 'git://github.com/puppetlabs/puppetlabs-stdlib.git' + ref: '3.2.0' + common: + repo: 'git://github.com/ghoneycutt/puppet-module-common.git' + ref: 'v1.0.2' + firewall: + repo: 'git://github.com/puppetlabs/puppetlabs-firewall.git' symlinks: - "ssh": "#{source_dir}" + ssh: "#{source_dir}" diff --git a/.travis.yml b/.travis.yml index 2c28477..69db3b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,11 +8,6 @@ rvm: - 1.8.7 - 1.9.3 - 2.0.0 -matrix: - fast_finish: true - allow_failures: - - rvm: 2.0.0 - - env: PUPPET_VERSION=3.4.2 language: ruby before_script: "gem install --no-ri --no-rdoc bundler" script: 'bundle exec rake validate && bundle exec rake lint && SPEC_OPTS="--format documentation" bundle exec rake spec' diff --git a/Modulefile b/Modulefile index 2103bf0..7cf7e33 100644 --- a/Modulefile +++ b/Modulefile @@ -1,5 +1,5 @@ name 'ghoneycutt-ssh' -version '3.6.0' +version '3.6.1' source 'git://github.com/ghoneycutt/puppet-module-ssh.git' author 'ghoneycutt' license 'Apache License, Version 2.0' diff --git a/README.md b/README.md index a4fbc9a..4b16a2a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The module uses exported resources to manage ssh keys and removes ssh keys that # Compatability # -This module has been tested to work on the following systems with Puppet v3. +This module has been tested to work on the following systems with Puppet v3 and Ruby versions 1.8.7, 1.9.3 and 2.0.0. * Debian 7 * EL 5 diff --git a/manifests/init.pp b/manifests/init.pp index 83a3180..0e3a0b3 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -346,9 +346,59 @@ class ssh ( } } - package { 'ssh_packages': + case $::osfamily { + 'RedHat': { + $default_packages = ['openssh-server', + 'openssh-clients'] + $default_sshd_config_subsystem_sftp = '/usr/libexec/openssh/sftp-server' + $default_service_name = 'sshd' + } + 'Suse': { + $default_packages = 'openssh' + $default_service_name = 'sshd' + case $::architecture { + 'x86_64': { + $default_sshd_config_subsystem_sftp = '/usr/lib64/ssh/sftp-server' + } + 'i386' : { + $default_sshd_config_subsystem_sftp = '/usr/lib/ssh/sftp-server' + } + default: { + fail("ssh supports architectures x86_64 and i386 for Suse. Detected architecture is <${::architecture}>.") + } + } + } + 'Debian': { + $default_packages = [ 'openssh-server', + 'openssh-client'] + $default_sshd_config_subsystem_sftp = '/usr/lib/openssh/sftp-server' + $default_service_name = 'ssh' + } + default: { + fail("ssh supports osfamilies RedHat, Suse and Debian. Detected osfamily is <${::osfamily}>.") + } + } + + if $packages == 'USE_DEFAULTS' { + $packages_real = $default_packages + } else { + $packages_real = $packages + } + + if $service_name == 'USE_DEFAULTS' { + $service_name_real = $default_service_name + } else { + $service_name_real = $service_name + } + + if $sshd_config_subsystem_sftp == 'USE_DEFAULTS' { + $sshd_config_subsystem_sftp_real = $default_sshd_config_subsystem_sftp + } else { + $sshd_config_subsystem_sftp_real = $sshd_config_subsystem_sftp + } + + package { $packages_real: ensure => installed, - name => $packages_real, source => $ssh_package_source_real, adminfile => $ssh_package_adminfile_real, } @@ -360,7 +410,7 @@ class ssh ( group => $ssh_config_group, mode => $ssh_config_mode, content => template('ssh/ssh_config.erb'), - require => Package['ssh_packages'], + require => Package[$packages_real], } file { 'sshd_config' : @@ -370,7 +420,7 @@ class ssh ( owner => $sshd_config_owner, group => $sshd_config_group, content => template('ssh/sshd_config.erb'), - require => Package['ssh_packages'], + require => Package[$packages_real], } if $sshd_config_banner != 'none' and $sshd_banner_content != undef { @@ -381,7 +431,7 @@ class ssh ( group => $sshd_banner_group, mode => $sshd_banner_mode, content => $sshd_banner_content, - require => Package['ssh_packages'], + require => Package[$packages_real], } } @@ -440,7 +490,7 @@ class ssh ( ensure => $ssh_key_ensure, type => $ssh_key_type, key => $key, - require => Package['ssh_packages'], + require => Package[$packages_real], } # import all nodes' ssh keys diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index d3a308b..44829ec 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -16,12 +16,13 @@ describe 'ssh' do it { should_not contain_class('common')} - it { - should contain_package('ssh_packages').with({ - 'ensure' => 'installed', - 'name' => ['openssh-server','openssh-clients'], - }) - } + ['openssh-server','openssh-clients'].each do |pkg| + it { + should contain_package(pkg).with({ + 'ensure' => 'installed', + }) + } + end it { should contain_file('ssh_config').with({ @@ -30,7 +31,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0644', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-clients]'], }) } @@ -50,7 +51,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0600', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-clients]'], }) } @@ -387,12 +388,13 @@ describe 'ssh' do it { should_not contain_class('common')} - it { - should contain_package('ssh_packages').with({ - 'ensure' => 'installed', - 'name' => ['openssh-server','openssh-client'], - }) - } + ['openssh-server','openssh-client'].each do |pkg| + it { + should contain_package(pkg).with({ + 'ensure' => 'installed', + }) + } + end it { should contain_file('ssh_config').with({ @@ -401,7 +403,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0644', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-client]'], }) } @@ -421,7 +423,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0600', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-client]'], }) } @@ -482,9 +484,8 @@ describe 'ssh' do it { should_not contain_class('common')} it { - should contain_package('ssh_packages').with({ + should contain_package('openssh').with({ 'ensure' => 'installed', - 'name' => 'openssh', }) } @@ -495,7 +496,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0644', - 'require' => 'Package[ssh_packages]', + 'require' => 'Package[openssh]', }) } @@ -515,7 +516,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0600', - 'require' => 'Package[ssh_packages]', + 'require' => 'Package[openssh]', }) } @@ -576,9 +577,8 @@ describe 'ssh' do it { should_not contain_class('common')} it { - should contain_package('ssh_packages').with({ + should contain_package('openssh').with({ 'ensure' => 'installed', - 'name' => 'openssh', }) } @@ -589,7 +589,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0644', - 'require' => 'Package[ssh_packages]', + 'require' => 'Package[openssh]', }) } @@ -609,7 +609,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0600', - 'require' => 'Package[ssh_packages]', + 'require' => 'Package[openssh]', }) } @@ -700,7 +700,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0644', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-clients]'], }) } @@ -752,7 +752,7 @@ describe 'ssh' do 'owner' => 'root', 'group' => 'root', 'mode' => '0600', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-clients]'], }) } @@ -786,7 +786,7 @@ describe 'ssh' do 'group' => 'root', 'mode' => '0644', 'content' => 'textinbanner', - 'require' => 'Package[ssh_packages]', + 'require' => ['Package[openssh-server]', 'Package[openssh-clients]'], }) } end