
Eu tenho um servidor Jenkins que efetua login no meu servidor de produção via ssh e deve reiniciar alguns serviços com systemctl restart myservice.service
Li problemas semelhantes e a solução mais comum foi esta:
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
e insira-o no arquivo sudoers.
Eu também adicionei
Defaults:jenkins !requiretty
Meu arquivo de implantação faz isso:
sudo /bin/systemctl restart myservice.service
e, apesar dos meus esforços, ainda recebo o seguinte erro:
sudo: no tty present and no askpass program specified
Eu li sobre o uso de -t ao fazer ssh, mas não tenho certeza de como faria isso, pois executo vários comandos e alguns não são comandos sudo.
Alguém tem uma boa solução para permitir que Jenkins reinicie meus serviços? Eu gostaria de evitar que Jenkins usasse root como usuário principal.
Editar:
Este foi um problema da minha parte. Meu jenkins fez ssh em outro servidor e não está logado como "jenkins", então eu estava alterando as permissões para o usuário errado. A solução com
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
funciona bem desde que seja o usuário certo.