# copyright koumbit.org # Licence: GPL class cups { service { "cups": enable => true, ensure => running, subscribe => [ Package["cupsys"], File["/etc/cups/cupsd.conf"] ], } service { "saned": enable => true, ensure => running, subscribe => [ Package["sane-utils"], File["/etc/default/saned"] ], } } class cups::server { package { "cupsys": ensure => "installed" } package { [ "hplip", "hpijs-ppds" ]: ensure => installed; } file { "/etc/cups/cupsd.conf": source => "puppet:///cups/cupsd.conf", ensure => present, require => Package["cupsys"], owner => "root", group => "root", mode => "644", } file { "/etc/cups/printers.conf": ensure => present, require => Package["cupsys"], owner => "root", group => "lp", mode => "600", } } define cups::printer ($printer, $p_deviceuri, $p_description, $p_location, $p_pathppd = "", $p_ppd = "", $p_filter = "", $p_accept = "", $p_enable = "", $p_scan = "" ) { include cups::server if $p_pathppd { exec { "cups_create_printer_$name": command => "lpadmin -p $printer -v $p_deviceuri -D '$p_description' -L '$p_location' -P $p_pathppd", path => "/bin:/sbin:/usr/sbin:/usr/bin", unless => "/bin/grep $printer /etc/cups/printers.conf", require => [Package["cupsys"], Package["hplip"], Package["hpijs-ppds"]], } } else { file { "/etc/cups/ppd/$p_ppd": ensure => present, owner => "root", group => "root", mode => "644", source => "puppet:///files/cups/$name/$p_ppd", require => [Package["cupsys"], Package["hplip"], Package["hpijs-ppds"]], } $p_pathppdd = "/etc/cups/ppd/" exec { "cups_create_printer_$name": command => "lpadmin -p $printer -v $p_deviceuri -D '$p_description' -L '$p_location' -P $p_pathppdd$p_ppd", path => "/bin:/sbin:/usr/sbin:/usr/bin", unless => "/bin/grep $printer /etc/cups/printers.conf", require => [Package["cupsys"], Package["hplip"], Package["hpijs-ppds"]], } } if $p_filter { file { "/usr/lib/cups/filter/$p_filter": ensure => present, owner => "root", group => "root", mode => "755", source => "puppet:///files/cups/$name/$p_filter", require => exec["cups_create_printer_$name"], } } else { debug ("'$printer' doesn't need a special filter") } if $p_accept { exec { "cupsaccept_$name": command => "cupsaccept $printer", path => "/bin:/sbin:/usr/sbin:/usr/bin", unless => "grep -A8 $printer /etc/cups/printers.conf | grep 'Accepting Yes'", require => exec["cups_create_printer_$name"], } } else { debug ("'$printer' will not accept print jobs") } if $p_enable { exec { "cupsenable_$name": command => "cupsenable $printer", path => "/bin:/sbin:/usr/sbin:/usr/bin", unless => "grep -A5 $printer /etc/cups/printers.conf | grep 'State Idle'", require => exec["cups_create_printer_$name"], } } else { debug ("'$printer' is disabled") } if $p_scan { package { "sane-utils": ensure => "installed" } line { saned_activate_off: file => "/etc/default/saned", line => 'RUN=no', ensure => absent, require => Package["sane-utils"], notify => Service["saned"], } line { saned_activate_on: file => "/etc/default/saned", line => 'RUN=yes', ensure => present, require => Package["sane-utils"], notify => Service["saned"], } } else { debug ("'$printer' cannot scan on the network") } }