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.