Puppet: System Administration Automated

Support

syslog-ng recipe

This is a recipe for installing/configuring syslog-ng on a system, registering the syslog-ng service in SMF, starting syslog-ng, and stopping the standard syslog daemon.

The only generic piece right now is the config file --- everything else is Solaris 10 specific primarily because that is my current focus and I haven't had time to do anything with other OSes.

 # syslog-ng.pp
#
# Class for syslog-ng clients that installs the syslog-ng software, populates a default config file, starts the syslog-ng daemon, and stop the syslog daemon.
#
# Note: This class is NOT for syslog-ng servers (e.g. the centralized loghost).
#
class syslog-ng {
        # create syslog-ng.conf file from UCR template
        file { "/etc/syslog-ng.conf":
                owner => root,
                group => root,
                mode => 440,
                source => "puppet:///dist/apps/syslog-ng/syslog-ng.conf"
        }

        case $operatingsystem {
                solaris: {
                        # create the syslog-ng package staging directory
                        file { "/sysprov/dist/apps/syslog-ng":
                                owner => puppet,
                                group => puppet,
                                ensure => directory
                             }

                        # copy the syslog-ng package from the puppetmaster
                        file { "/sysprov/dist/apps/syslog-ng/UCRsyslog-ng-1-6-11":
                                owner => puppet,
                                group => puppet,
                                source => "puppet:///dist/apps/syslog-ng/UCRsyslog-ng-1-6-11",
                                ensure => present
                             }

                        # install UCRsyslog-ng-currentversion
                        package { "UCRsyslog-ng-1-6-11":
                                ensure => installed,
                                provider => sun,
                                source => "/sysprov/dist/apps/syslog-ng/UCRsyslog-ng-1-6-11",
                                require => File[ "/sysprov/dist/apps/syslog-ng/UCRsyslog-ng-1-6-11" ]
                                }

                        # remove symlinks to UCRsyslog-ng-previousversion
                        exec { "/inst/pkg/graft/bin/graft -d -D /opt/UCR/UCRsl-ng/syslog-ng" :
                        refreshonly => true
                             }

                        # remove UCRsyslog-ng-previousversion
                        package { "UCRsl-ng":
                                ensure => absent,
                                provider => sun,
                                }

                        # create symlinks in /usr/local to UCRsyslog-ng-currentversion
                        exec { "/inst/pkg/graft/bin/graft -i /opt/UCR/UCRsyslog-ng-1-6-11" :
                             }

                # Copy the SMF related files from the puppetmaster
                                 case $operatingsystemrelease {
                                 "5.10": {

                                        # syslog-ng SMF Manifest
                                        file { "/var/svc/manifest/system/syslog-ng.xml":
                                                owner => root,
                                                group => root,
                                                mode => 555,
                                                source => "puppet:///dist/apps/syslog-ng/syslog-ng.xml",
                                                ensure => present
                                             }

                                        # syslog-ng SMF svc.method
                                        file { "/lib/svc/method/syslog-ng" :
                                                owner => root,
                                                group => root,
                                                mode => 555,
                                                source => "puppet:///dist/apps/syslog-ng/svc.method.syslog-ng",

                                             }

                                        exec { "`svccfg import /var/svc/manifest/system/syslog-ng.xml`" :

                                             }
                                 }
                                 }
                                 }
                        }
                # Start the syslog-ng service
                        case $operatingsystemrelease {
                        # for Solaris 10
                        "5.10": {
                                service { syslog-ng:
                                        ensure => "running",
                                        }
                              }

                        # Stop the standard syslog service
                        case $operatingsystemrelease {
                        # for Solaris 10
                        "5.10": {
                                service { system-log:
                                        ensure => "stopped",
                                        }
                              }

                }


}