Я использую 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.
Любые идеи?
Это ваша первая установка сервера Ubuntu? В таком случае вы должны знать, что многие пакеты перешли с традиционных сценариев init.d на выскочку. Squid был бы таким пакетом. Это означает, что нет настоящего /etc/init.d/squid
. Вместо этого это символическая ссылка, но вы сможете увидеть ее, если сделаете ls -la /etc/init.d
. Настоящий сценарий запуска - это задача-выскочка в /etc/init/squid.conf
.
Вам нужно изменить свой манифест service
определение к этому:
service { 'squid':
ensure => 'running',
provider => 'upstart',
hasrestart => 'true',
hasstatus => 'true',
subscribe => File['/etc/squid/squid.conf'],
}
Обратите внимание, что провайдер марионеток-выскочка не может enable
сервис, поэтому эту директиву включать не следует.
Кальмар вроде называется squid3
в apt-get и это сообщение об ошибке делает происходит, когда имя пакета неверно.
Это просто означает, что нет /etc/init.d/squid
, или это не исполняемый файл. Найдите правильное имя и установите либо name
или path
к правильному значению.
У меня была аналогичная проблема, решение выглядело так (ссылка на отчет об ошибке включена):
file { $upstartfile:
ensure => present,
source => "puppet:///elasticsearch/etc-init-elasticsearch.conf",
}
# for http://projects.puppetlabs.com/issues/14297
file { '/etc/init.d/elasticsearch':
ensure => link,
target => "/lib/init/upstart-job",
}
service { 'elasticsearch':
ensure => running,
hasrestart => true,
hasstatus => true,
provider => 'upstart',
subscribe => [ File[$upstartfile], File['/etc/init.d/elasticsearch'] ],
}
Т.е. символическая ссылка в /etc/init.d
названный elasticsearch
к /lib/init/upstart-job
.
Я думаю, что эта проблема связана с тем, что Puppet не выполняет манифест последовательно. Таким образом, Puppet может попытаться запустить службу Squid перед установкой пакета Squid, и, конечно же, это вызовет ошибку.
Затем вы должны управлять зависимостями различных задач. Попробуйте внести это изменение:
service { 'squid':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
subscribe => File['/etc/squid/squid.conf'],
require => Package['squid'],
}
Удачи !