Domain-Controller
我可以使用ansible在域模式下啟動jboss服務嗎?
我
sh /usr/local/jboss/bin/domain.sh
手動使用,jboss工作正常。當我使用ansible自動啟動jboss時,jboss日誌總是顯示“
Container is down
”。文件
/root/startup_jboss.sh
:#!/bin/bash /bin/sh /usr/local/jboss/bin/domain.sh &
我的
startup.yml
:--- - name: Tranfser and Execute a script hosts: AuditReport tasks: - name: Tranfser the scipt command: chdir=/root /bin/sh startup_jboss.sh
我不知道為什麼?
有人可以幫我嗎?
謝謝。
問候,雲
您遇到的錯誤與
domain.sh
您登錄時和由 Ansible 遠端執行時腳本執行的上下文不同有關。有關更多詳細資訊,請參閱此SO 問題。您需要
/root/startup_jboss.sh
使用缺少的環境變數完成腳本才能正常工作。您可以使用遠端 SSH 命令在與 ansible 相同的條件下對其進行測試:
ssh root@<your node> /root/startup_jboss.sh
您可以使用 Ansible 在遠端伺服器上執行 shell 腳本,但我認為這不是您案例中的正確解決方案。
Ansible 是一個配置管理工具,旨在描述您的資源(文件、程序、權限等)的所需狀態並確保****冪等性(僅完成所需的更改,您可以多次執行腳本並且始終獲得相同的狀態)。在您的案例中,您希望確保 JBoss 在遠端伺服器上以域模式執行。我解決它的方法是將
domain.sh
腳本封裝在init腳本中,使其作為服務執行,並最終將此服務配置為在伺服器啟動時執行。我不知道您的 linux 發行版是什麼,但您可以在這裡init.d
查看 Debian 腳本的範例。在您的
startup.yml
劇本中,您首先要複製init.d
腳本,然後確保您的服務正在執行(Ansible 提供了一個本地模組來管理服務)。