Eu tentei configurar um novo servidor através do nosso mestre de marionetes. Era para ser um assunto rápido, tudo lá estava funcionando de maneira bastante confiável e ainda está nos servidores mais antigos.
Só que o novo servidor é o primeiro que está rodando o Ubuntu 18, e o fantoche parece não conseguir iniciar os serviços. Aqui está um exemplo de um erro que estou recebendo ao tentar garantir que um serviço esteja em execução:
Error: /Stage[main]/Influxdb/Service[influxdb]/ensure: change from stopped to running failed: Could not find init script for 'influxdb'
Na saída de depuração, posso ver as seguintes coisas:
Executing: '/usr/sbin/service influxdb status'
Service[influxdb](provider=debian): Could not find influxdb in /etc/init.d
Service[influxdb](provider=debian): Could not find influxdb.sh in /etc/init.d
Na verdade, não há nenhum arquivo relacionado ao serviço em /etc/init.d, mas isso nunca foi necessário antes. Se eu executar sudo /usr/sbin/service influxdb status
a partir do console, o comando funciona. Então, por que o agente fantoche não consegue gerenciar o serviço exatamente?
Observe que não tenho 100% de certeza de que o problema está no Ubuntu 18. Essa é apenas a única coisa significativa que posso pensar que mudou e, aparentemente, houve algumas mudanças com o systemd no Ubuntu 18, embora ainda não esteja claro sobre o que eles são exatamente. O que eu gostaria é de uma solução que não exija que eu reescreva todos os meus arquivos de serviço e tenha uma configuração de marionete que funcione nos servidores que ainda executam o sistema operacional antigo, bem como nos servidores que executam o novo. Alguém pode me ajudar a conseguir isso?
Se eu tivesse encontrado esse problema, estas são as etapas que eu tomaria:
Eu pegaria o script init.sh do influxdb, que por padrão pode ser encontrado no seu servidor influxdb, no caminho
/usr/lib/influxdb/scripts/init.sh
e copiá-lo para/etc/init.d/influxdb
.Torne o script executável:
chmod u+x /etc/init.d/influxdb
Execute novamente o Puppet.
Se você não conseguir encontrar esse script de inicialização, eu o enviei para pastebin.com, aqui está o link (peguei do meu servidor que executa a versão 1.6.4): https://pastebin.com/fkHRGfZH
Se você quiser que o serviço seja iniciado no momento da inicialização, execute:
E ele copiará o arquivo que você criou
/etc/init.d/influxdb
para cada nível de execução que você especificou.Portanto, a causa disso é usar uma versão muito antiga do Puppet em um sistema operacional muito mais recente. Puppet 4.10.12 (que o OP está usando) não conhece o Ubuntu 18.04 e o fato de usar o systemd como o sistema de inicialização escolhido. A heurística nessa versão do Puppet basicamente sabe que o systemd é usado nas versões do Ubuntu de 15.04 a 17.10 inclusive. Na versão 5.3.6 do Puppet, que adiciona oficialmente suporte ao Ubuntu 18.04, essa versão é adicionada à lista de versões conhecidas por usar o systemd. Nas versões posteriores do Puppet, a lógica é invertida para dizer que o systemd é usado em todas as versões do Ubuntu , exceto nas versões 10.04 a 14.10, que devem facilitar as coisas quando a próxima versão do Ubuntu chegar.