Puppet:无法找到‘squid’的初始化脚本

Puppet:无法找到‘squid’的初始化脚本

我正在使用 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'],
}

祝你好运 !

相关内容