shell - ¿Cómo ejecutar un script como root en Jenkins?
hudson (3)
Debe ejecutar el script usando sudo
:
sudo /path/to/script
Pero antes debe permitir que jenkins
ajuste el script en /etc/sudoers
.
jenkins ALL = NOPASSWD: /path/to/script
Necesito ejecutar un script de shell en Jenkins como root en lugar del usuario predeterminado. ¿Qué necesito cambiar?
Mi archivo sudoers es así:
# User privilege specification
root ALL=(ALL) ALL
igx ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
root ALL=(ALL) ALL
jenkins ALL=NOPASSWD: /var/lib/jenkins/workspace/ing00112/trunk/source/
jenkins ALL=(ALL) NOPASSWD:ALL
#Defaults:jenkins !requiretty
La respuesta de @Igor Chubin es 100% correcta, pero nunca abre el archivo sudoer con un editor normal. siempre use visudo
Sólo tipo
sudo visudo
esto lo llevará a /etc/sudoers
y al guardarlo se asegurará de que no haya ningún error en el formateo.
si comete un error en el archivo sudoer, perderá el acceso a sudo, por lo tanto, siempre use visudo
Me doy cuenta de que llego tarde a la fiesta con esta pregunta, pero como referencia, pensé en lanzar mi 2c aquí: uso el complemento SSH para que Jenkins lo logre (simplemente configure un objetivo del host local). De esta manera, puedo contener el script directamente dentro de Jenkins (como un paso normal de "Ejecutar shell"), en lugar de usar sudo para invocar un script externo.