这是有道理的,实际上是在这个站点上建议的 ,让关键文件更改触发带有 puppet 元参数(例如通知或订阅)的服务重新启动。例如:
## file definition for printers.conf
file { "/etc/cups/printers.conf":
[snip],
source => "puppet:///module/etc/cups/printers.conf"
}
## service definition for sshd
service { 'cups':
ensure => running,
subscribe => File['/etc/cups/printers.conf']
}
Run Code Online (Sandbox Code Playgroud)
但是在 CUPS 的情况下,这会触发无限循环的重启;逻辑是这样的:
/etc/cups/printers.conf
runinterval
,我们返回到(1)。有没有办法抑制cupsd需要给文件加时间戳?或者是否有木偶戏法可以在这里提供帮助?
谢谢!
小智 5
另一种方法是使用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"];
}
Run Code Online (Sandbox Code Playgroud)
这样我们就可以避免在 CUPS 运行时弄乱printers.conf。要删除打印机,我们可以使用lpadmin -x PRINTER-NAME
(请参阅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 }
}
}
Run Code Online (Sandbox Code Playgroud)
该print-common::lex250
会那么很可能被分解出来的东西可重复使用,使用可变魔术等
您可以将文件复制到另一个名称,并让 exec 仅在 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"],
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1840 次 |
最近记录: |