Converte scripts de inicialização sysvinit / upstart para runit

5

Estou tentando migrar uma infra-estrutura atualmente baseada em VM para uma baseada em Docker, usando docker-baseimage , que usa o runit / runsv para iniciar e supervisionar os serviços do sistema. Agora, embora aparentemente seja muito fácil instalar um programa Python auto-escrito como um serviço, eu estou lutando para converter os scripts /etc/init.d/* para serviços runit.

Às vezes, é bastante fácil e há também uma lista no link , mas alguns desses scripts não funcionam com (a última versão do) caminhos do Ubuntu e também estou querendo saber se eu deveria às vezes incorporar o processo em um chroot ou tê-lo executado como um usuário diferente.

Existe uma maneira segura e confiável de converter os scripts de inicialização encontrados no Ubuntu em scripts simples executáveis?

    
por tgpfeiffer 26.12.2014 / 02:56

1 resposta

2

A resposta curta

Por enquanto, não, não há um método automatizado específico para executar.

A resposta longa

Existem várias abordagens para resolver isso.

Usando scripts pré-construídos

O primeiro é ter um conjunto pré-construído de scripts. Estes podem ser extraídos de outros projetos. O Void Linux usa o runit como seu init e supervisor de base, então pode ser interessante. Existe um projeto no Github chamado runit-scripts que pode ter algo do que você precisa. E eu farei um plug sem vergonha para o meu próprio projeto, scripts de supervisão , que tem alguns deles pré-cozidos e pronto, embora o projeto ainda esteja sendo desenvolvido.

Usando um framework

A segunda é fornecer uma estrutura que facilite a transição da escrita de scripts. Ignite é uma possibilidade. Além disso, o Framework de Script de Supervisão do Toki Clover (não deve ser confundido com meu próprio projeto) pode fornecer o que você procura também. Nesse caso, não há definições pré-criadas, mas você obtém pedaços de script de shell (e possivelmente outros programas) para ajudá-lo a facilitar essa transição.

Empréstimo de scripts e ferramentas existentes

O terceiro é emprestar scripts de outros projetos. Isso significa sair e realmente caçar para eles. Há alguns por aí, mas você precisa realmente olhar.

Fazendo da maneira mais difícil

E, finalmente, você às vezes precisa escrever sozinho. Francamente, se você estiver desesperado, faça uma cópia do arquivo original /etc/init.d/(qualquer), coloque-o de lado e edite o arquivo. Normalmente, na parte inferior de um script init.d, você encontrará uma instrução CASE & amigos, e de lá você pode ver se há alguma estranha opção de linha de comando que não deveria estar lá, mas sim. Não se preocupe com nada além do que está dentro de start) e stop) , porque eles não se aplicam ao usar um supervisor. Olhe ao redor e veja se ele precisa de um diretório / var / run / (whatever) configurado, isso é sempre importante também (não se esqueça de configurar a propriedade se você criá-lo!). E no topo, se o autor fez certo, geralmente há um conjunto de variáveis de ambiente que contêm o nome do daemon real , junto com suas opções. De lá você pode costurar rapidamente um pequeno script rapidamente.

    
por 30.09.2015 / 03:45