A maneira mais segura de implantar um daemon via Jenkins

2

Estou desenvolvendo um serviço de sistema em Java e, para a implantação, gostaria de fazer o seguinte:

  1. Copie o novo Initd da compilação
  2. Pare o serviço que está sendo implantado
  3. Substituir / copiar o novo exemplo de JAR / config
  4. Inicie o serviço.

Existe uma maneira de fazer isso sem dar acesso root a jenkins? [Para aqueles não-jenkins folk: Jenkins usa SCP & SSH para fazer o envio de cópia e comando] Minha preocupação é que, se eu der acesso de root a Jenkins, você não esteja limitando as permissões dadas. O escopo disso é limitar apenas a mudança para esse serviço. (Não depende de outros serviços)

Estou disposto a relaxar o primeiro requisito, pois isso pode tornar a solução mais complicada.

    
por monksy 16.10.2015 / 19:38

1 resposta

0

Há um poucas perguntas já existentes neste site sobre como permitir que apenas um usuário execute apenas um script como root (por exemplo, usando sudo); Basicamente, você precisará escrever um script que execute as etapas de 2 a 4 (por exemplo, service foo stop; cp -f ~jenkins/service.init /etc/init.d/; service foo start ) e forneça as permissões de usuário NOPASSWD para esse script em /etc/sudoers .

Fundamentalmente, permitir que Jenkins instale um script de inicialização é o mesmo que dar a Jenkins (e qualquer um que possa alterar as entradas que criam o script e executar novamente o trabalho) porque o script de inicialização será executado como root quando você reiniciar.

    
por 16.10.2015 / 22:55