Выполнить удаленную команду после sudo - su другого пользователя в Rundeck

Я новичок в Rundeck и полностью удивлен этим, и я пытаюсь выполнить работу, и мой сценарий подробно описан ниже:

  • Для Rundeck настроена аутентификация по протоколу ssh без аутентификации между узлом Server (сервер rundeck) и узлом Target (удаленный хост Solaris) для пользователя "master".

  • В узле Target я хочу выполнить скрипт /app/acme/stopApp.sh с пользователем appmanager,

  • Обычно, когда мне нужно запустить скрипт выше, я вручную продолжаю:

ssh master@server

sudo su - appmanager

или просто

ssh -t master@server
sudo su - appmanager

работает без пароля и наконец запускается (как appmanager)

/app/acme/stopApp.sh

Но я не знаю, как я могу воспроизвести эти шаги, используя Rundeck. В некоторых предыдущих сообщениях я читал, что для каждой рабочей строки rundeck использует новое ssh-соединение, поэтому рабочий процесс ниже всегда терпит неудачу для меня с сообщениями:

sudo: отсутствует tty и не задана программа askpass Удаленная команда завершилась неудачно с состоянием выхода 1

Может ли кто-нибудь помочь мне с этим вопросом?

Без этой функциональности я не смог бы ввести немного DevOps в моем отделе.:-D

Я прочитал руководство пользователя и руководство администратора, но не смог найти ни простого примера на этом форуме.

Я буду признателен за вашу помощь.

Rundeck версия 1.4

2 ответа

Решение

Хотя ваш логин ssh работает без пароля, вам также необходимо настроить sudo на целевом сервере, чтобы он не требовал пароля.

Поскольку вам нужно, чтобы мастер- пользователь мог выполнять команды от имени пользователя appmanager, вы можете полностью справиться с этим с помощью sudo. В /etc/sudoers на Target, добавьте:

master  ALL=(appmanager) NOPASSWD: ALL

Тогда ваша команда ssh становится:

ssh -t master@server 'sudo -u appmanager /app/acme/stopApp.sh'

Если вам нужна настройка среды, которая обычно обрабатывается оболочкой входа в appmanager, вам нужно явно указать эту настройку. (И я бы сказал, что настройка среды развертывания в любом случае не должна ограничиваться оболочкой входа).

Более подробную информацию о том, как позволить одному пользователю запускать команды от имени другого пользователя, можно найти в ответе ServerFault и на странице руководства sudoers, которая намного плотнее.

sudo su - appmanager

Пытается открыть оболочку входа в систему, и поэтому хочет реальный терминал. Удалите "-", чтобы избежать этого поведения. В конце концов, ваша команда будет выглядеть

sudo su -c /app/acme/stopApp.sh appmanager
Другие вопросы по тегам