можно изучить заголовок и директиву нижнего колонтитула апача, Используя директивы ниже.
Options +Indexes
AllowOverride All
AddOutputFilter LAYOUT html htm shtml
LayoutComment On
LayoutHeader /wrappers/scott-header.html
LayoutFooter /wrappers/scott-footer.html
Больше чтения здесь: http://wannabe.guru.org/scott/hobbies/apache/
Вы могли скопировать файл в другое имя и иметь должностное лицо, чтобы только скопировать, если printers.conf не содержит строку, Вы требуете. Например.
file { "/etc/cups/printers.conf.puppet":
source => "puppet:///modules/desktop/cups/printers.conf",
mode => 0600,
owner => root,
group => lp;
}
# cups will put it's own timestamp in printers.conf, causing a loop if
# puppet always replaces if the timestamp is different. This only replaces
# the file is HP-Laserjet is not present
exec { "/bin/cp /etc/cups/printers.conf.puppet /etc/cups/printers.conf":
unless => '/bin/grep "HP-LaserJet-2300" /etc/cups/printers.conf 2>/dev/null',
subscribe => File["/etc/cups/printers.conf.puppet"],
refreshonly => "true",
require => Package["cups"],
notify => Service["cups"],
}
С тех пор cupsd
настаивает для изменения printers.conf
Вы не можете заменить целый файл, вместо этого необходимо изменить его на линию за линией основание. Проверьте http://projects.puppetlabs.com/projects/puppet/wiki/Simple_Text_Patterns, который это покажет Вам, как заменить части файла.
Альтернативный подход - использовать lpadmin
для добавления принтера в CUPS, если он отсутствует в printers.conf.
Например:
exec {
"/usr/sbin/lpadmin -p Lexmark-E450 -E -v usb://Lexmark/E450 -P /path/to/Lexmark_E450.ppd":
unless => "/bin/grep Lexmark-E450 /etc/cups/printers.conf 2>/dev/null",
require => File["/path/to/Lexmark_E450.ppd"];
}
Таким образом, мы избегайте путаницы с printers.conf во время работы CUPS. Чтобы удалить принтер, мы можем использовать lpadmin -x ИМЯ ПРИНТЕРА
(см. страницу руководства lpadmin )
Более конкретный пример:
class print-common::lex250 {
exec {
"/usr/sbin/lpadmin -p Lexmark-E250 -E -v usb://Lexmark/E250d -P /path/to/PRINTER.ppd":
unless => "/bin/grep Lexmark-E250 /etc/cups/printers.conf 2>/dev/null",
require => File["/path/to/PRINTER.ppd"];
}
}
class print-common {
package {
"cups": ensure => installed;
}
service {
"cups":
ensure => running,
require => Package["cups"],
subscribe => File["/etc/cups/cupsd.conf"];
}
file {
"/etc/cups/cupsd.conf":
ensure => present,
owner => root,
group => root,
mode => 644,
source => "puppet://puppet.mr.lan/files/etc/cups/cupsd.conf";
"/path/to/ppd/":
ensure => directory;
"/path/to/PRINTER.ppd":
ensure => present,
owner => root,
group => root,
mode => 644,
source => "puppet://puppet.mr.lan/files/path/to/PRINTER.ppd",
require => File["/path/to/ppd/"];
}
case $fqdn {
'host1.domain.name','host2.domain.name': { include print-common::lex250 }
}
}
print-common :: lex250
затем, вероятно, можно было бы преобразовать во что-то многократно используемое, используя переменную магию и т. д.
Я видел эту проблему раньше, и похоже, что она будет исправлена апстримом в CUPS 1.4.7, поэтому он будет перезаписывать файл (обновляя метку времени) только в случае изменения
Ошибка Fedora № 565674 описывает 1 это исправление, а в Debian используется исправление, предотвращающее запись метки времени.