Added support for configuring printers and deploying cups configuration.
This commit is contained in:
parent
ad4abc7a77
commit
3186d04bba
2 changed files with 185 additions and 0 deletions
88
cups/files/cupsd.conf
Normal file
88
cups/files/cupsd.conf
Normal file
|
@ -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...
|
||||||
|
<Location />
|
||||||
|
Order allow,deny
|
||||||
|
Allow @LOCAL
|
||||||
|
</Location>
|
||||||
|
|
||||||
|
# Restrict access to the admin pages...
|
||||||
|
<Location /admin>
|
||||||
|
Encryption Required
|
||||||
|
Order allow,deny
|
||||||
|
</Location>
|
||||||
|
|
||||||
|
# Restrict access to configuration files...
|
||||||
|
<Location /admin/conf>
|
||||||
|
AuthType Default
|
||||||
|
Require user @SYSTEM
|
||||||
|
Order allow,deny
|
||||||
|
</Location>
|
||||||
|
|
||||||
|
# Set the default printer/job policies...
|
||||||
|
<Policy default>
|
||||||
|
# Job-related operations must be done by the owner or an administrator...
|
||||||
|
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
|
||||||
|
Require user @OWNER @SYSTEM
|
||||||
|
Order deny,allow
|
||||||
|
</Limit>
|
||||||
|
|
||||||
|
# All administration operations require an administrator to authenticate...
|
||||||
|
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
|
||||||
|
AuthType Default
|
||||||
|
Require user @SYSTEM
|
||||||
|
Order deny,allow
|
||||||
|
</Limit>
|
||||||
|
|
||||||
|
# All printer operations require a printer operator to authenticate...
|
||||||
|
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
|
||||||
|
AuthType Default
|
||||||
|
Require user @SYSTEM
|
||||||
|
Order deny,allow
|
||||||
|
</Limit>
|
||||||
|
|
||||||
|
# Only the owner or an administrator can cancel or authenticate a job...
|
||||||
|
<Limit Cancel-Job CUPS-Authenticate-Job>
|
||||||
|
Require user @OWNER @SYSTEM
|
||||||
|
Order deny,allow
|
||||||
|
</Limit>
|
||||||
|
|
||||||
|
<Limit All>
|
||||||
|
Order deny,allow
|
||||||
|
</Limit>
|
||||||
|
</Policy>
|
||||||
|
|
||||||
|
#
|
||||||
|
# End of "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $".
|
||||||
|
#
|
|
@ -41,12 +41,32 @@ class cups::server inherits cups::client {
|
||||||
ensure => installed,
|
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":
|
service { "cups":
|
||||||
ensure => running,
|
ensure => running,
|
||||||
enable => true,
|
enable => true,
|
||||||
require => Package["cups"],
|
require => Package["cups"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
file { "/etc/cups/ppd":
|
||||||
|
ensure => directory,
|
||||||
|
mode => 0755,
|
||||||
|
owner => root,
|
||||||
|
group => lp,
|
||||||
|
require => Package["cups"],
|
||||||
|
}
|
||||||
|
|
||||||
File["/etc/cups/client.conf"] {
|
File["/etc/cups/client.conf"] {
|
||||||
content => "ServerName 127.0.0.1\n",
|
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
|
# Install LP support into cups
|
||||||
#
|
#
|
||||||
class cups::lpd {
|
class cups::lpd {
|
||||||
|
|
Loading…
Add table
Reference in a new issue