Puppet: Não foi possível encontrar o script de inicialização para 'squid'

1

Estou usando o Puppet para instalar o ufdbGuard, que requer o Squid 2.7 (que está corretamente instalado e funcionando corretamente).

Aqui está a classe relevante:

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'],
}
}

Ao correr, recebo este erro:

err: /Stage[main]/Pns_client::Squid/Service[squid]: Could not evaluate: Could not find init script for 'squid'

Isto acontece em todas as máquinas Debian 6 e Unbuntu 10.04 / 11.04 recém-instaladas.

Alguma idéia?

    
por chris 06.03.2012 / 11:44

5 respostas

2

Esta é sua primeira instalação de servidor Ubuntu? Em caso afirmativo, você deve saber que muitos pacotes passaram de scripts init.d tradicionais para upstart. O Squid seria um desses pacotes. Isso significa que não há% real/etc/init.d/squid. Em vez disso, trata-se de um link simbólico, mas você poderá vê-lo se fizer um ls -la /etc/init.d . O script de início real é uma tarefa iniciante em /etc/init/squid.conf .

Você precisa alterar a definição service do seu manifesto para esta:

service { 'squid':
  ensure     => 'running',
  provider   => 'upstart',
  hasrestart => 'true',
  hasstatus  => 'true',
  subscribe  => File['/etc/squid/squid.conf'],
}

Observe que o provedor de fantoches iniciante não pode enable um serviço, portanto, essa diretiva não deve ser incluída.

    
por 07.03.2012 / 02:13
2

O Squid parece ser chamado de squid3 no apt-get e esta mensagem de erro faz acontecer quando o nome do pacote está errado.

    
por 06.03.2012 / 12:18
2

Isso significa que não há /etc/init.d/squid ou não é executável. Descubra qual é o nome correto e defina name ou path para o valor correto.

    
por 06.03.2012 / 14:27
2

Eu tive um problema parecido, onde a solução ficou assim (link para relatório de bug incluído):

  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'] ],
  }

Ou seja. um link simbólico em /etc/init.d denominado elasticsearch para /lib/init/upstart-job .

    
por 17.06.2012 / 22:54
1

Eu acho que esse problema se deve ao fato do Puppet não executar o manifesto sequencialmente. Então o Puppet pode tentar iniciar o serviço do Squid antes de instalar o pacote do Squid e é claro que isso causa um erro.

Você tem que gerenciar as dependências das diferentes tarefas. Tente fazer essa alteração:

service { 'squid':
  ensure     => running,
  enable     => true,
  hasrestart => true,
  hasstatus  => true,
  subscribe  => File['/etc/squid/squid.conf'],
  require => Package['squid'],
}

Boa sorte!

    
por 06.03.2012 / 14:57

Tags