
Tengo un servidor jenkins que inicia sesión en mi servidor de producción a través de ssh y se supone que debe reiniciar algunos servicios con systemctl restart myservice.service
He leído problemas similares y la solución más común fue esta:
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
e insértelo en el archivo sudoers.
También he añadido
Defaults:jenkins !requiretty
Mi archivo de implementación hace esto:
sudo /bin/systemctl restart myservice.service
y luego, a pesar de mis esfuerzos, sigo recibiendo el siguiente error:
sudo: no tty present and no askpass program specified
He leído sobre el uso de -t al realizar ssh, pero no estoy seguro de cómo lo haría, ya que hago varios comandos y algunos no son comandos sudo.
Entonces, ¿alguien tiene una buena solución para permitir que jenkins reinicie mis servicios? Me gustaría evitar que jenkins use root como usuario principal.
Editar:
Este fue un problema de mi lado. Mi jenkins se conectó a otro servidor y no inició sesión como "jenkins", por lo que estaba cambiando los permisos para el usuario equivocado. La solución con
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
funciona bien siempre que sea el usuario adecuado.