Deixando Jenkins executar comandos como root

Deixando Jenkins executar comandos como root

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.

informação relacionada