Contexte :
J'ai créé une application appelée myapp
avec Spring-boot
. Il se compose d'un pot auto-exécutable et est compatible avec les services systemd. Maintenant, j'essaie de l'intégrer avec jenkins.
Ce que je veux:
Je veux que jenkins puisse:
- arrêtez le service.
- remplacer le pot.
- redémarrez le service.
Problème:
Jusqu'à présent, seuls les sudoers peuvent démarrer / arrêter les services. Je ne veux pas que jenkins soit un sudoer (cela semble désordonné).
Structure actuelle:
J'ai un utilisateur myapp
qui a un /home/myapp
dossier. Le pot généré est appelé myapp
et placé à /home/myapp
. L'utilisateur myapp
est propriétaire du pot généré:
myapp@myserver:~/backend$ ll
total 53900
drwxrwxr-x 2 myapp myapp 4096 Apr 25 17:09 ./
drwxr-xr-x 6 myapp myapp 4096 Apr 25 17:08 ../
-rw-rw-r-- 1 myapp myapp 511 Apr 20 16:13 application.properties
-rwxr--r-- 1 myapp myapp 55175294 Apr 20 19:06 backend-1.0-SNAPSHOT.jar*
lrwxrwxrwx 1 myapp myapp 24 Apr 20 19:20 myapp -> backend-1.0-SNAPSHOT.jar*
-rw-r--r-- 1 myapp myapp 179 Apr 20 19:26 myapp.service
J'ai placé une clé ssh pour que jenkins puisse se connecter en tant que myapp@myserver
.
Comme myapp
le propriétaire du pot, je pense qu'il pourrait y avoir une option qui permet à l'utilisateur myapp
d'appeler systemctl start/stop myapp
. En fait, je peux appeler systemctl status myapp
mais pas start/stop
(le mot de passe root est demandé).
Aucune suggestion?
sudo
désordre, c'est généralement la façon dont vous devriez implémenter quelque chose comme ça. Créez un groupe, affectez-y votre utilisateur jenkins et utilisezvisudo
fournit un jeu de commandes limité à ce groupe pour gérer le servicemyapp
d'appelersudo systemctl
uniquement pour son propre service?Réponses:
sudo
est la voie à suivre. Créez un nouveau groupe (appadmin
par exemple), mettez-y votrejenkins
utilisateur etvisudo
ajoutez une nouvelle entrée avec une liste limitée de commandes, par exemple:Si vous souhaitez que le
appadmin
groupe puisse faire fonctionner le service sans saisir de mot de passe au préalable (utile si l'utilisateur n'est authentifié que par une clé SSH par exemple),la source