source: trunk/puppet/modules/cups/manifests/init.pp @ 478

Last change on this file since 478 was 478, checked in by sebas, 14 years ago

agregamos el acl para llegar al scanner + el lado cliente + cambio en el cupsd.conf para monstrarlas impresoras local al resto de la red

File size: 5.2 KB
Line 
1# copyright koumbit.org
2# Licence: GPL
3
4class cups {
5}
6
7define cups::saned::client ($remotescanner)
8  {
9   package { "xsane": ensure => "installed" }
10
11   file { "/etc/sane.d/net.conf":
12      ensure => present,
13      require => Package["xsane"],
14      owner => "root", group => "root", mode => "644",
15   }
16    line { saned_remotescanner:
17      file => "/etc/sane.d/net.conf",
18      line => $remotescanner,
19      ensure => present,
20      require => Package["xsane"],
21    }
22  }
23
24class cups::saned {
25
26   package { "sane-utils": ensure => "installed" }
27
28    line { saned_activate_off:
29      file => "/etc/default/saned",
30      line => 'RUN=no',
31      ensure => absent,
32      require => Package["sane-utils"],
33      notify  => Service["saned"],
34    }
35    line { saned_activate_on:
36      file => "/etc/default/saned",
37      line => 'RUN=yes',
38      ensure => present,
39      require => Package["sane-utils"],
40      notify  => Service["saned"],
41    }
42
43   file { "/etc/default/saned":
44      ensure => present,
45      require => Package["sane-utils"],
46      owner => "root", group => "root", mode => "644",
47   }
48
49    line { saned_allow:
50      file => "/etc/sane.d/saned.conf",
51      line => $sanedallow,
52      ensure => present,
53      require => Package["sane-utils"],
54      notify  => Service["saned"],
55    }
56
57   file { "/etc/sane.d/saned.conf":
58      ensure => present,
59      require => Package["sane-utils"],
60      owner => "root", group => "root", mode => "644",
61   }
62
63   service { "saned":
64      enable => true,
65      ensure => running,
66      provider => "debian",
67      subscribe => [ Package["sane-utils"], File["/etc/default/saned"] ],
68   }
69
70   @user { "saned":
71        ensure  => "present",
72        groups  => "lp",
73        require => Package["sane-utils"],
74   }
75
76   realize(
77        User["saned"]
78   )
79
80}
81
82class cups::server {
83
84   package { "cupsys": ensure => "installed" }
85   package { [ "hplip", "hpijs-ppds" ]: ensure => installed; }
86
87   file { "/etc/cups/cupsd.conf":
88      source => "puppet:///cups/cupsd.conf",
89      ensure => present,
90      require => Package["cupsys"],
91      owner => "root", group => "root", mode => "644",
92   }
93
94   file { "/etc/cups/printers.conf":
95      ensure => present,
96      require => Package["cupsys"],
97      owner => "root", group => "lp", mode => "600",
98   }
99
100   service { "cups":
101      enable => true,
102      ensure => running,
103      provider => "debian",
104      subscribe => [ Package["cupsys"], File["/etc/cups/cupsd.conf"] ],
105   }
106}
107
108define cups::printer ($printer, $p_deviceuri, $p_description, $p_location, $p_pathppd = "", $p_ppd = "", $p_filter = "", $p_accept = "", $p_enable = "", $p_scan = "" )
109 {
110   include cups::server
111
112  if $p_pathppd {
113    exec { "cups_create_printer_$name":
114      command => "lpadmin -p $printer -v $p_deviceuri -D '$p_description' -L '$p_location' -P $p_pathppd",
115      path => "/bin:/sbin:/usr/sbin:/usr/bin",
116      unless => "/bin/grep $printer /etc/cups/printers.conf",
117      require => [Package["cupsys"], Package["hplip"], Package["hpijs-ppds"], Service["cups"]],
118    }
119  } else {
120     file { "/etc/cups/ppd/$p_ppd":
121     ensure => present,
122     owner => "root", group => "root", mode => "644",
123     source  => "puppet:///files/cups/$name/$p_ppd",
124     require => [Package["cupsys"], Package["hplip"], Package["hpijs-ppds"]],
125    }
126    $p_pathppdd = "/etc/cups/ppd/"
127
128    exec { "cups_create_printer_$name":
129      command => "lpadmin -p $printer -v $p_deviceuri -D '$p_description' -L '$p_location' -P $p_pathppdd$p_ppd",
130      path => "/bin:/sbin:/usr/sbin:/usr/bin",
131      unless => "/bin/grep $printer /etc/cups/printers.conf",
132      require => [Package["cupsys"], Package["hplip"], Package["hpijs-ppds"]],
133    }
134  }
135
136  if $p_filter {
137     file { "/usr/lib/cups/filter/$p_filter":
138     ensure => present,
139     owner => "root", group => "root", mode => "755",
140     source  => "puppet:///files/cups/$name/$p_filter",
141     require => exec["cups_create_printer_$name"],
142    }
143  } else {
144    debug ("'$printer' doesn't need a special filter")
145  }
146
147  if $p_accept {
148    exec { "cupsaccept_$name":
149      command => "cupsaccept $printer",
150      path => "/bin:/sbin:/usr/sbin:/usr/bin",
151      unless => "grep -A8 $printer /etc/cups/printers.conf | grep 'Accepting Yes'",
152      require => exec["cups_create_printer_$name"],
153    }
154  } else {
155    exec { "cupsreject_$name":
156      command => "cupsreject $printer",
157      path => "/bin:/sbin:/usr/sbin:/usr/bin",
158      unless => "grep -A8 $printer /etc/cups/printers.conf | grep 'Accepting No'",
159      require => exec["cups_create_printer_$name"],
160    }
161    debug ("'$printer' will not accept print jobs")
162  }
163
164  if $p_enable {
165    exec { "cupsenable_$name":
166      command => "cupsenable $printer",
167      path => "/bin:/sbin:/usr/sbin:/usr/bin",
168      unless => "grep -A5 $printer /etc/cups/printers.conf | grep 'State Idle'",
169      require => exec["cups_create_printer_$name"],
170    }
171  } else {
172    exec { "cupsdisable_$name":
173      command => "cupsdisable $printer",
174      path => "/bin:/sbin:/usr/sbin:/usr/bin",
175      unless => "grep -A5 $printer /etc/cups/printers.conf | grep 'State Stopped'",
176      require => exec["cups_create_printer_$name"],
177    }
178    debug ("'$printer' is disabled")
179  }
180
181  if $p_scan {
182    include cups::saned
183  } else {
184    debug ("'$printer' cannot scan on the network")
185  }
186
187}
188
Note: See TracBrowser for help on using the repository browser.