0

Below yaml playbook restarts the jboss server but doesnt get back control to execute next ansible command. I have also used wait for module to stop waiting for current command result and go for next command. But still ansbile hangs on current command indefinitely . Please let me know when I went wrong?

   ---
    - 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

terminal output message

ESTABLISH SSH CONNECTION FOR USER: XXXXXXXXXXX SSH: EXEC sshpass -d12 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o User=XXXXXXXXX -o ConnectTimeout=10 -o ControlPath=/home/tcprod/XXXXXXXXXX/.ansible/cp/ansible-ssh-%h-%p-%r -tt X.X.X.X '/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'"'"''

sntchaitu
  • 1
  • 2
  • 6

1 Answers1

0

The & is not allowed in Ansible "command".

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

Try removing it or use shell instead of command.

From Ansible documentation about command:

The given command [...] will not be processed through the shell, so variables like $HOME and operations like "<", ">", "|", ";" and "&" will not work (use the shell module if you need these features).

gile
  • 5,580
  • 1
  • 25
  • 31