Jenkins가 루트로 명령을 실행하도록 허용

Jenkins가 루트로 명령을 실행하도록 허용

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

올바른 사용자라면 정상적으로 작동할 것입니다.

관련 정보