Задний план :
Я создал приложение под названием myapp
с Spring-boot
. Он состоит из исполняемого файла jar и совместим с сервисами systemd. Теперь я пытаюсь интегрировать это с Дженкинсом.
Что я хочу:
Я хочу, чтобы Дженкинс мог:
- остановить службу.
- заменить банку.
- перезапустите сервис.
Проблема:
До сих пор только sudoers может запускать / останавливать сервисы. Я не хочу, чтобы Дженкинс был sudoer (это кажется грязным).
Текущая структура:
У меня есть пользователь, у myapp
которого есть /home/myapp
папка. Созданная банка называется myapp
и помещается в /home/myapp
. Пользователь myapp
является владельцем сгенерированного jar:
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
Я поместил ключ SSH, чтобы Дженкинс мог войти в систему myapp@myserver
.
Как myapp
и владелец банки, я думаю, что может быть опция, которая позволяет пользователю myapp
звонить systemctl start/stop myapp
. На самом деле я могу позвонить, systemctl status myapp
но нет start/stop
(пароль root спрашивается).
Какие-либо предложения?
sudo
беспорядочным, как правило, вы должны реализовывать что-то подобное. Создайте группу, назначьте ей своего пользователя jenkins и, используя,visudo
предоставьте этой группе ограниченный набор команд для управления сервисомmyapp
звонитьsudo systemctl
только для собственного сервиса?Ответы:
sudo
это путь Создайте новую группу (appadmin
например), добавьтеjenkins
в нее своего пользователя иvisudo
добавьте новую запись с ограниченным списком команд, например:Если вы хотите, чтобы
appadmin
группа могла управлять службой без предварительного ввода пароля (полезно, например, если пользователь проходит проверку подлинности только по ключу SSH),источник