我正在使用 Puppet 安装 ufdbGuard,它需要 Squid 2.7(已正确安装并正常运行)。
以下是相关课程:
class pns_client::squid {
package { 'squid':
ensure => present,
before => File['/etc/squid/squid.conf'],
}
if $::ufdbguard_installed == "true" {
$squidconf = 'puppet:///modules/pns_client/squid.conf_ufdbguard'
} else {
$squidconf = 'puppet:///modules/pns_client/squid.conf'
}
notify{$squidconf:}
file { '/etc/squid/squid.conf':
ensure => file,
mode => 644,
source => $squidconf,
}
service { 'squid':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
subscribe => File['/etc/squid/squid.conf'],
}
}
运行时,出现此错误:
err: /Stage[main]/Pns_client::Squid/Service[squid]: Could not evaluate: Could not find init script for 'squid'
这发生在所有新安装的 Debian 6 和 Unbuntu 10.04/11.04 机器上。
有任何想法吗?
答案1
这是你第一次安装 Ubuntu 服务器吗?如果是这样,你应该知道许多软件包已经从传统的 init.d 脚本过渡到 upstart。Squid 就是这样一个软件包。这意味着没有真正的/etc/init.d/squid
。相反,这是一个符号链接,但如果你执行 ,你应该能够看到它ls -la /etc/init.d
。真正的启动脚本是 中的 upstart 任务/etc/init/squid.conf
。
您需要将清单的service
定义更改为:
service { 'squid':
ensure => 'running',
provider => 'upstart',
hasrestart => 'true',
hasstatus => 'true',
subscribe => File['/etc/squid/squid.conf'],
}
请注意,upstart puppet 提供程序不能enable
提供服务,因此不应包含该指令。
答案2
Squid 似乎在 apt-get 中被调用squid3
,并且出现此错误消息做当包名称错误时会发生这种情况。
答案3
这仅仅意味着没有/etc/init.d/squid
,或者它不可执行。找出正确的名称,并将name
或设置path
为正确的值。
答案4
我认为这个问题是由于 Puppet 不按顺序执行清单造成的。因此,Puppet 可以在安装 Squid 包之前尝试启动 Squid 服务,这当然会导致错误。
然后,您必须管理不同任务的依赖关系。尝试进行以下更改:
service { 'squid':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
subscribe => File['/etc/squid/squid.conf'],
require => Package['squid'],
}
祝你好运 !