diff --git a/cups/files/cupsd.conf b/cups/files/cupsd.conf new file mode 100644 index 0000000..184549a --- /dev/null +++ b/cups/files/cupsd.conf @@ -0,0 +1,88 @@ +# +# "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $" +# +# Sample configuration file for the Common UNIX Printing System (CUPS) +# scheduler. See "man cupsd.conf" for a complete description of this +# file. +# +MaxLogSize 2000000000 + +# Log general information in error_log - change "info" to "debug" for +# troubleshooting... +LogLevel info + +# Administrator user group... +SystemGroup sys root sysadm + +# Disable preserving jobs +PreserveJobFiles Off +PreserveJobHistory Off + +# Only listen for connections from the local machine. +Listen *:631 +Listen /var/run/cups/cups.sock + +# Show shared printers on the local network. +Browsing On +BrowseOrder allow,deny +# (Change '@LOCAL' to 'ALL' if using directed broadcasts from another subnet.) +BrowseAllow @LOCAL + +# Default authentication type, when authentication is required... +DefaultAuthType Basic + +# Restrict access to the server... + + Order allow,deny + Allow @LOCAL + + +# Restrict access to the admin pages... + + Encryption Required + Order allow,deny + + +# Restrict access to configuration files... + + AuthType Default + Require user @SYSTEM + Order allow,deny + + +# Set the default printer/job policies... + + # Job-related operations must be done by the owner or an administrator... + + Require user @OWNER @SYSTEM + Order deny,allow + + + # All administration operations require an administrator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # All printer operations require a printer operator to authenticate... + + AuthType Default + Require user @SYSTEM + Order deny,allow + + + # Only the owner or an administrator can cancel or authenticate a job... + + Require user @OWNER @SYSTEM + Order deny,allow + + + + Order deny,allow + + + +# +# End of "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $". +# diff --git a/cups/manifests/init.pp b/cups/manifests/init.pp index ea91882..784a566 100644 --- a/cups/manifests/init.pp +++ b/cups/manifests/init.pp @@ -41,12 +41,32 @@ class cups::server inherits cups::client { ensure => installed, } + file { "/etc/cups/cupsd.conf": + ensure => present, + source => [ "puppet:///files/cups/cupsd.conf.${fqdn}", + "puppet:///files/cups/cupsd.conf", + "puppet:///cups/cupsd.conf", ], + mode => 0640, + owner => root, + group => lp, + require => Package["cups"], + notify => Service["cups"], + } + service { "cups": ensure => running, enable => true, require => Package["cups"], } + file { "/etc/cups/ppd": + ensure => directory, + mode => 0755, + owner => root, + group => lp, + require => Package["cups"], + } + File["/etc/cups/client.conf"] { content => "ServerName 127.0.0.1\n", } @@ -54,6 +74,83 @@ class cups::server inherits cups::client { } +# Install and configure printer. +# +# === Parameters +# +# $name: +# Printer name. +# $uri: +# URI to use for connecting to printer device. +# $location: +# Printer location, defaults to empty. +# $ppd: +# PPD file to use for printer. If set to "auto" PPD will be copied +# from "puppet:///files/cups/${name}.ppd". +# $ensure: +# If set to present printer will be installed and if set to absent +# printer will be removed. +# +# === Sample usage +# +# cups::printer { "hp1": +# ensure => present, +# uri => "socket://hp1:9100, +# location => "Unknown", +# } +# +define cups::printer($uri, $ensure = present, $location = "", $ppd = "auto") { + + case $ensure { + present: { + exec { "cups-add-printer-${name}": + command => "lpadmin -p ${name} -E -v ${uri} -o printer-error-policy=abort-job", + path => "/bin:/sbin:/usr/bin:/usr/sbin", + unless => "lpq -P ${name}", + require => Service["cups"], + } + exec { "cups-set-location-${name}": + command => "lpadmin -p ${name} -L '${location}'", + path => "/bin:/sbin:/usr/bin:/usr/sbin", + unless => $location ? { + "" => "lpoptions -p ${name} | egrep ' printer-location '", + default => "lpoptions -p ${name} | egrep ' printer-location=${location} '", + }, + require => Exec["cups-add-printer-${name}"], + } + } + absent: { + exec { "cups-del-printer-${name}": + command => "lpadmin -x ${name}", + path => "/bin:/sbin:/usr/bin:/usr/sbin", + onlyif => "lpq -P ${name}", + require => Service["cups"], + } + } + default: { + fail("Unknown argument to ensure.") + } + } + + file { "/etc/cups/ppd/${name}.ppd": + ensure => $ensure, + source => $ppd ? { + "auto" => "puppet:///files/cups/${name}.ppd", + default => "${ppd}", + }, + mode => 0644, + owner => root, + group => root, + require => $ensure ? { + present => [ Exec["cups-add-printer-${name}"], + File["/etc/cups/ppd"], ], + absent => Exec["cups-del-printer-${name}"], + }, + } + +} + + # Install LP support into cups # class cups::lpd {