SSH를 통해 프로덕션 서버에 로그인하고 systemctl restart myservice.service를 사용하여 일부 서비스를 다시 시작하는 젠킨스 서버가 있습니다.
비슷한 질문을 읽었으며 가장 일반적인 해결책은 다음과 같습니다.
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
sudoers 파일에 삽입하세요.
나도 추가했다
Defaults:jenkins !requiretty
내 배포 파일은 다음과 같습니다.
sudo /bin/systemctl restart myservice.service
그런 다음 노력에도 불구하고 여전히 다음 오류가 발생합니다.
sudo: no tty present and no askpass program specified
ssh'ing 시 -t를 사용하는 방법에 대해 읽었지만 여러 명령을 실행하고 있고 그 중 일부는 sudo 명령이 아니기 때문에 이를 수행하는 방법을 잘 모르겠습니다.
Jenkins가 내 서비스를 다시 시작하도록 하는 좋은 솔루션이 있는 사람이 있나요? Jenkins가 루트를 기본 사용자로 사용하는 것을 피하고 싶습니다.
편집하다:
이것은 내 쪽의 문제입니다. 내 jenkins ssh를 다른 서버로 연결했는데 "jenkins"로 로그인되어 있지 않아 잘못된 사용자에 대한 권한을 변경하고 있습니다. 솔루션
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
올바른 사용자라면 정상적으로 작동할 것입니다.