Domain-Controller

我可以使用ansible在域模式下啟動jboss服務嗎?

  • May 6, 2016

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 提供了一個本地模組來管理服務)。

引用自:https://serverfault.com/questions/775181