Hi there,

after reading the code I have changed my puppet code to the following
(thanks ! - it is now much more readable :-) ).
But I don't know how to change the "source =>" from syslog::config
class to be universal.
Could you please help me ?

class syslog::params {
        case $lsbmajdistrelease {
                '5':    {
                                $syslog_package_name = 'sysklogd'
                                $syslog_syslog_config = '/etc/
syslog.conf'
                                $syslog_service_name = 'syslog'
                }

                '6':    {
                                $syslog_package_name = 'rsyslog'
                                $syslog_syslog_config = '/etc/
rsyslog.conf'
                                $syslog_service_name = 'rsyslog'
                }
        }
}

class syslog::install {
        package { $syslog::params::syslog_package_name:
                ensure => installed,
        }
}

class syslog::config {
        file    { $syslog::params::syslog_config:
                ensure => present,
                owner => 'root',
                group => 'root',
                mode => 0644,
                source => "puppet:///modules/syslog/syslog.conf",
                require => Class["syslog::install"],
                notify => Class["syslog::service"],
        }
}

class syslog::service {
        service { $syslog::params::syslog_service_name:
                ensure => runing,
                enable => true,
                require => Class["syslog::config"],
        }
}

class syslog {
        include syslog::params, syslog::install, syslog::config,
syslog::service
}


On 9 Apr, 05:47, Gavin Williams <[email protected]> wrote:
> Hi there,
>
> I think you're quickest win for making the code cleaner and easier would be
> to create a ::params class, which sets the correct values for package, file
> and service based on your distro.
>
> Can then inherit this class on your ::install, ::config and ::service
> classes.
>
> I'm sure other people will chime in with some other ideas aswell :)
>
> HTH
>
> Gav
>
>
>
>
>
>
>
> On Tuesday, 9 April 2013 10:36:51 UTC+1, ForumUser wrote:
>
> > Hello all,
>
> > I am trying to write a syslog module for our small puppet installation.
> > Since I'd like to learn how to write puppet classes/modules I would avoid
> > modules from puppet labs forge (at least for now).
>
> > This module is going to be deployed on RH 5 _and_ 6.
> > In our infrastructure each RH line (5 or 6) is configured differently:
> > RH 5 uses sysklogd, RH 6 uses rsyslog.
>
> > I have written a class but as you can see it has a lot of redundant code.
> > Can I use any puppet syntax to make it more elegant (and easier to
> > maintain :-) ) ?
> > Can you suggest anything ?
>
> > class syslog::install {
> >         case $lsbmajdistrelease {
> >                 '5':    {
> >                                 package { "sysklogd":
> >                                         ensure => present,
> >                                 }
> >                         }
>
> >                 '6':    {
> >                                 package { "rsyslog":
> >                                         ensure => present,
> >                                 }
> >                         }
> >         }
> > }
>
> > class syslog::config {
> >         case $lsbmajdistrelease {
> >                 '5':    {
> >                                 file    { "/etc/syslog.conf":
> >                                         ensure => present,
> >                                         owner => 'root',
> >                                         group => 'root',
> >                                         mode => 0644,
> >                                         source =>
> > "puppet:///modules/syslog/syslog.conf",
> >                                         require =>
> > Class["syslog::install"],
> >                                         notify => Class["syslog::service"],
> >                                 }
> >                         }
>
> >                 '6':    {
> >                                 file    { "/etc/rsyslog.conf":
> >                                         ensure => present,
> >                                         owner => 'root',
> >                                         group => 'root',
> >                                         mode => 0644,
> >                                         source =>
> > "puppet:///modules/syslog/rsyslog.conf",
> >                                         require =>
> > Class["syslog::install"],
> >                                         notify => Class["syslog::service"],
> >                                 }
> >                         }
> >         }
> > }
>
> > class syslog::service {
> >         case $lsbmajdistrelease {
> >                 '5':    {
> >                                 service { "syslog":
> >                                         ensure => runing,
> >                                         enable => true,
> >                                         require => Class["syslog::config"],
> >                                 }
> >                         }
>
> >                 '6':    {
> >                                 service { "rsyslog":
> >                                         ensure => runing,
> >                                         enable => true,
> >                                         require => Class["syslog::config"],
> >                                 }
> >                         }
> >         }
> > }
>
> > class syslog {
> >         include syslog::install, syslog::config, syslog::service
> > }
>
> > Thanks in advance :-)
> > Przemek

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to