Задний план :
Я создал приложение под названием 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 спрашивается).
Какие-либо предложения?
myappзвонить sudo systemctlтолько для собственного сервиса?
sudoбеспорядочным, как правило, вы должны реализовывать что-то подобное. Создайте группу, назначьте ей своего пользователя jenkins и, используя,visudoпредоставьте этой группе ограниченный набор команд для управления сервисом