view modules/ssh/manifests/init.pp @ 131:0dd899a10ee1 puppet-3.6

Change all "latest" packages to "installed" Having Puppet update packages is dangerous and not correct sysadmin. We have a script for checking for updates. Let that run and let the sysadmin update when appropriate. This will prevent any potential issues from faulty service restarts in the middle of the night.
author IBBoard <dev@ibboard.co.uk>
date Wed, 26 Oct 2016 19:40:37 +0100
parents cd79745f0236
children c3fa3d65aa83
line wrap: on
line source

# This is an example proposed Puppet Common Module for SSH
#
# Usage Requirements:
# 1) Set $server in site.pp
#    Allows for a different fileserver than the real puppetmaster
# 2) Set $os to $operatingsystem
#    Saves typing, purely cosmetic
# 3) Set $osver to $operatingsystemrelease or $lsbdistrelease
#    $operatingsystemrelease is not available on all platforms
#
#Taken from the the Puppet Wiki - http://projects.puppetlabs.com/projects/1/wiki/puppet_common_modules_ssh

class ssh {
    # Distribution independent packages
    # See also our Operating System specific sub-classes
    @package { [
            "openssh-clients",
            "openssh-server",
#            "denyhosts"
        ]:
        ensure => installed
    }

    # Virtual Resources get defined before we include $operatingsystem specific
    # classes, so that there is at least something to add and/or override.
    # 
    # Additionally, this way we can realize() in sub-classes as much as we want
    # to, and not concern ourselves with duplicate type definitions
    #

#    @file { "/etc/denyhosts.conf":
#        notify => Service["denyhosts"],
#        require => Package["denyhosts"],
#        source => [
#            "puppet://$server/private/$domain/denyhosts/denyhosts.conf",
#            "puppet://$server/files/denyhosts/denyhosts.conf",
#            "puppet://$server/denyhosts/denyhosts.conf"
#        ]
#    }

    @file { "/etc/ssh/ssh_config":
        owner => "root",
        mode => 644,
        require => Package["openssh-clients"],
        source => [
            #
            # See rationale for an explanation on this list of sources
            # http://reductivelabs.com/trac/puppet/wiki/PuppetCommonModules/SSH
            #
           "puppet://$server/private/$domain/ssh/$operatingsystem/$osver/ssh_config.$hostname",
            "puppet://$server/private/$domain/ssh/$operatingsystem/$osver/ssh_config",
            "puppet://$server/private/$domain/ssh/$operatingsystem/ssh_config.$hostname",
            "puppet://$server/private/$domain/ssh/$operatingsystem/ssh_config",
            "puppet://$server/private/$domain/ssh/ssh_config.$hostname",
            "puppet://$server/private/$domain/ssh/ssh_config",
            "puppet://$server/files/ssh/$operatingsystem/$osver/ssh_config.$hostname",
            "puppet://$server/files/ssh/$operatingsystem/$osver/ssh_config",
            "puppet://$server/files/ssh/$operatingsystem/ssh_config.$hostname",
            "puppet://$server/files/ssh/$operatingsystem/ssh_config",
            "puppet://$server/files/ssh/ssh_config.$hostname",
            "puppet://$server/files/ssh/ssh_config",
            "puppet://$server/ssh/$operatingsystem/$osver/ssh_config",
            "puppet://$server/ssh/$operatingsystem/ssh_config",
            "puppet://$server/ssh/ssh_config"
        ],
        sourceselect => first
    }

    @file { "/etc/ssh/sshd_config":
        owner => "root",
        mode => 644,
        notify => Service["openssh-server"],
        require => Package["openssh-server"],
        source => [
            #
            # See rationale for an explanation on this list of sources
            # http://reductivelabs.com/trac/puppet/wiki/PuppetCommonModules/SSH
            #
            "puppet://$server/private/$domain/ssh/$operatingsystem/$osver/sshd_config.$hostname",
            "puppet://$server/private/$domain/ssh/$operatingsystem/$osver/sshd_config",
            "puppet://$server/private/$domain/ssh/$operatingsystem/sshd_config.$hostname",
            "puppet://$server/private/$domain/ssh/$operatingsystem/sshd_config",
            "puppet://$server/private/$domain/ssh/sshd_config.$hostname",
            "puppet://$server/private/$domain/ssh/sshd_config",
            "puppet://$server/files/ssh/$operatingsystem/$osver/sshd_config.$hostname",
            "puppet://$server/files/ssh/$operatingsystem/$osver/sshd_config",
            "puppet://$server/files/ssh/$operatingsystem/sshd_config.$hostname",
            "puppet://$server/files/ssh/$operatingsystem/sshd_config",
            "puppet://$server/files/ssh/sshd_config.$hostname",
            "puppet://$server/files/ssh/sshd_config",
            "puppet://$server/ssh/$operatingsystem/$osver/sshd_config",
            "puppet://$server/ssh/$operatingsystem/sshd_config",
            "puppet://$server/ssh/sshd_config"
        ],
        sourceselect => first
    }

    @service { "openssh-server":
        enable => true,
        ensure => running,
        require => [
            File["/etc/ssh/sshd_config"],

            Package["openssh-server"]
        ]
    }


    # Include operatingsystem specific subclass
    case $::osfamily {
        Redhat: {
            include ssh::centos
        }
        default:{fail("Invalid OS type for SSH - $osfamily")}
    }
}

class ssh::client inherits ssh {
    realize(Package["openssh-clients"])
}

class ssh::server inherits ssh {
    realize(File["/etc/ssh/sshd_config"])
    realize(Package["openssh-server"])
    realize(Service["openssh-server"])
}

class ssh::centos inherits ssh {
    File["/etc/ssh/ssh_config"] {
        group => "root"
    }

    Service["openssh-server"] {
        name => "sshd",
        hasrestart => true,
        hasstatus => true,
#        restart => "/etc/init.d/sshd restart",
#        status => "/etc/init.d/sshd status"
    }
}