Eu tenho um servidor Jenkins que loga 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 quando ssh'ing, mas não tenho certeza de como faria isso, já que faço vários comandos e alguns não são comandos sudo.
Então, alguém tem uma boa solução para deixar os jenkins reiniciarem meus serviços? Eu gostaria de evitar jenkins usando root como seu usuário principal.
Editar:
Este foi um problema do meu lado. Meu jenkins ssh'd em outro servidor e não está logado como "Jenkins", então eu estava mudando 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 ao mesmo tempo em que é o usuário certo.