Run shell scripts as root though Jenkins
I have a EC2 instance running. How can I run commands with sudo
through Jenkins?
When I try sudo touch /home/ec2-user/foo.bar
, I get the following error: sudo: no tty present and no askpass program specified
.
What am I doing wrong?
Solution 1:
By default sudo cannot be used without a TTY. In order to do so:
- Disable 'requiretty' in sudoers (using visudo)
- This should amount to commenting out 'Defaults requiretty' (using visudo)
- Ensure that your user is able to login without entering a password:
- Set 'NOPASSWD' in sudoers
- Create the user if the user does not exist
- Set visiblepw - this will allow sudo to work, even if the password entered is displayed
- (required in some cases when echo cannot be disabled).