Como posso ativar um serviço somente quando ele é instalado no Puppet?

1

Foi dito que use o parâmetro onlyif, mas parece não existir um para o tipo de serviço.

O que posso fazer para ativar este serviço somente se ele estiver instalado? Ele é instalado com um instalador binário, portanto, testando se o diretório de instalação existe t

class scom {
    service { 'scx-cimd':
        ensure => running,
        enable => true,
        hasstatus => true,
        hasrestart => true,
        onlyif => "test -f /opt/microsoft/scx"
    }
}

A mensagem de erro atual é "Somente parâmetro inválido", porque o serviço não possui um parâmetro onlyif. O que posso fazer para habilitar este serviço somente se o diretório de instalação existir?

    
por ujjain 20.09.2013 / 11:26

1 resposta

2

O tipo de serviço ( 3.x , 2.x ) não possui um parâmetro onlyif, que faz parte do tipo exec ( 3.x , 2.x .

Para fazer o que você quer fazer, existem duas maneiras. A primeira maneira é a maneira normal e preferida de fazer coisas. A segunda maneira é um hack que funcionará também, de preferência o chkconfig do serviço deve ser um executável separado, mas não há nenhum problema em chkconfiging um serviço, mesmo que ele já esteja configurado dessa maneira.

Opção 1. Escreva um fato para ver se o serviço está instalado e coloque um condicional ao redor do tipo de serviço:

# service_scx_installed.rb
Facter.add('service_scx_installed') do
  setcode do
    File.exists?('/opt/microsoft/scx')
  end
end

# scom.pp
class scom {
  if $service_scx_installed {
    service { 'scx-cimd':
        ensure => running,
        enable => true,
        hasstatus => true,
        hasrestart => true,
    }
  }
}

Opção 2. Coloque toda a lógica em um grande executável:

exec {'start and chkconfig on scx service':
  command  => 'chkconfig scx service on; service scx restart',
  onlyif   => ['test -f /opt/microsoft/scx', '! service scx status'],
  provider => 'shell',
}
    
por 28.09.2013 / 17:52

Tags