2016-12-08 48 views
0

在yaml playbook下面重新启动jboss服务器,但不回去控制执行下一个命令。我还使用了等待模块停止等待当前命令结果并转到下一个命令。但仍然无限期地挂在当前的命令上。当我出错时,请让我知道吗?启动jboss服务器使用可靠和返回控制

--- 
    - hosts: test1 
     tasks: 
     - name: simple command 
     become: true 
     command: whoami 
     register: output 
     - debug: 
      msg: "I gave the command whoami and the out is '{{output.stdout}}'" 

     - name: change to jboss user 
     become: true 
     become_user: jboss 
     command: whoami 
     register: output 
     - debug: 
      msg: "I gave the command whoami and the out is '{{output.stdout}}'" 


     - name: start jboss server as jboss user 
     become: true 
     become_user: jboss 
     command: sh /usr/jboss/bin/run.sh -c XXXXXXXX -b x.x.x.x & 
     when: inventory_hostname in groups['test1'] 
     register: restartscript 
     - debug: 
      msg: "output of server restart command is '{{restartscript.stdout}}'" 
     - name: waiting for server to come back 
     local_action: 
      module: wait_for 
      timeout=20 
      host=x.x.x.x 
      port=8080 
      delay=6 
      state=started 

终端输出消息

ESTABLISH SSH连接对于USER:XXXXXXXXXXX SSH:EXEC sshpass -d12 SSH -vvv -C -o ControlMaster =汽车-o ControlPersist = 60 -o用户= XXXXXXXXX -o ConnectTimeout = 10 -o ControlPath =/home/tcprod/XXXXXXXXXX/.ansible/cp/ansible-ssh-%h-%p-%r -tt XXXX'/ bin/sh -c'''''sudo -H - S -p“[sudo via ansible,key = hvgwnsbxpkxvbcmtcfvvsplfphdrevxg] password:”-u jboss/bin/sh -c''''''''''''''''''echo BECOME-SUCCESS -hvgwnsbxpkxvbcmtcfvvsplfphdrevxg;/usr/bin/python /tmp/ansible-tmp-XXXXXXXXX.XX-XXXXXXXXXXXXXX/command.py'''''''''''''''''''& & sleep 0'''“'''

回答

0

Ansible“command”中不允许使用&。

command: sh /usr/jboss/bin/run.sh -c XXXXXXXX -b x.x.x.x & 

尝试删除它或使用shell而不是命令。

Ansible documentation about command

给定的命令[...]不会 可以通过外壳处理,所以像$ HOME变量和操作 像 “<”, “>”, “|” ,“;”和“&”将不起作用(如果需要这些功能,请使用外壳模块 )。