2012-12-12 148 views
0

我是新與Rundeck並與它完全驚訝,我想執行的工作和我的情況是詳細波紋管:執行遠程命令 - 蘇anotheruser在Rundeck

  • Rundeck是在節點服務器(rundeck服務器)和節點目標(遠程Solaris主機) 之間爲用戶「主」配置了ssh密碼較少認證。

  • 在節點目標中我想執行腳本/app/acme/stopApp.sh與用戶appmanager

  • 通常當我需要運行上面的腳本我手動着手:

ssh [email protected]

sudo su - appmanager

或者乾脆

ssh -t [email protected] 
sudo su - appmanager 

作品沒有密碼,最後運行(如appmanag ER)

/app/acme/stopApp.sh

但我不知道我怎麼可以重現使用Rundeck這些步驟。我在每個作業線rundeck使用新的SSH連線以前的一些 短信讀取,所以工作流波紋管 總是失敗對​​我的消息:

須藤:沒有TTY出現,也沒有askpass程序指定 遠程命令失敗退出狀態1

有人可以幫我解決這個問題嗎?

如果沒有此功能,我將無法在我的部門中引入一點DevOps 。 :-D

我閱讀了用戶指南和管理員指南,但我找不到一個簡單的例子, 既不在此論壇中,也不遵守。

我會感謝您的幫助。

Rundeck版本是1.4

回答

2

雖然你的ssh登錄不需要輸入密碼,還需要在目標服務器上配置sudo的,這樣它不需要密碼。

因爲你只需要爲用戶能夠運行爲AppManager的用戶命令,你完全可以通過sudo的處理這個問題。在/etc/sudoers的目標,增加:

master ALL=(appmanager) NOPASSWD: ALL 

那麼你的ssh命令變爲:

ssh -t [email protected] 'sudo -u appmanager /app/acme/stopApp.sh' 

如果您需要環境設置是通常由AppManager的登錄shell來處理,你需要源,其設置明確。 (我認爲部署環境設置不應侷限於登錄shell。)

有關如何讓一個用戶以另一個用戶身份運行命令的更多詳細信息,請參閱ServerFault answer和更密集的sudoers man page

3
sudo su - appmanager 

試圖打開一個登錄shell,因此想要真正的終端。刪除「 - 」以避免此行爲。最後,你的命令會是什麼樣

sudo su -c /app/acme/stopApp.sh appmanager 
+0

在此之後顯示的消息不適用於我: 我們相信您已收到本地系統 管理員的常見演講。它通常歸結爲以下三件事: #1)尊重他人的隱私。 #2)在鍵入之前考慮一下。 #3)強大的力量來承擔巨大的責任。 密碼: – Bera

+0

'echo MyFancyPassword | sudo -S su - MyFancyUser any_shell_command' – TWiStErRob