我手动使用sh /usr/local/jboss/bin/domain.sh ,并且jboss工作正常。
当我使用可以自动启动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脚本的执行环境在您login时以及由Ansible远程执行时有所不同。 看到这个问题的更多细节。
您需要使用缺less的环境variables来完成/root/startup_jboss.sh脚本才能正常工作。 您可以在与远程SSH命令相同的条件下对其进行testing:
ssh root@<your node> /root/startup_jboss.sh
您可以使用Ansible在远程服务器上执行一个shell脚本,但我认为这不是您的使用情况中的正确解决scheme。
Ansible是一个configurationpipe理工具,旨在描述您的资源(文件,进程,权限等)的所需状态 ,并确保幂等性 (只有所需的更改已完成,您可以多次运行脚本,而且始终得到相同的状态 )。 在您的用例中,您希望确保JBoss在远程服务器上以域模式运行。 我要解决这个问题的方法是将domain.sh脚本封装在一个init脚本中,让它作为一个服务来运行,并最终configuration这个服务在服务器启动时运行。 我不知道你的Linux发行版是什么,但是你可以在这里看看Debian的一个init.d脚本的例子。
在您的startup.yml手册中,您首先需要复制init.d脚本,然后确保您的服务正在运行(Ansible提供了一个本地模块来pipe理服务 )。