Hi!
I wrote a simple playbook that downloads, extracts and starts Tomcat. Here are the relevant parts of it:
-
name: Download Tomcat 7.0.42
get_url: url=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz dest=/home/tomcat/apache-tomcat-7.0.42.tar.gz -
name: Extract Tomcat
command: chdir=/home/tomcat tar -xvzf apache-tomcat-7.0.42.tar.gz creates=/home/tomcat/apache-tomcat-7.0.42 -
name: Change ownership of Tomcat installation
file: path=/home/tomcat/apache-tomcat-7.0.42 owner=tomcat group=tomcat state=directory recurse=yes -
name: Configure Tomcat server
template: src=tomcat-users.xml dest=/home/tomcat/apache-tomcat-7.0.42/conf/
notify: restart tomcat -
name: Set JAVA_HOME for tomcat
lineinfile: dest=/home/tomcat/apache-tomcat-7.0.42/bin/setenv.sh line=‘export JAVA_HOME=/opt/java/jdk1.7.0_51’ create=yes state=present mode=0555 -
name: Start Tomcat
command: /home/tomcat/apache-tomcat-7.0.42/bin/startup.sh
sudo: true
sudo_user: tomcat -
name: wait for tomcat to start
wait_for: port=8080
The wait step always times out because Tomcat doesn’t start. The strange thing is that when I execute the startup.sh script on the vm’s shell it works. And Ansible doesn’t complain it says that the step was executed successfully. Here’s the output with ‘vvvv’:
TASK: [tomcat | Start Tomcat] *************************************************
<127.0.0.1> ESTABLISH CONNECTION FOR USER: vagrant
<127.0.0.1> EXEC [‘ssh’, ‘-tt’, ‘-vvv’, ‘-o’, ‘ControlMaster=auto’, ‘-o’, ‘ControlPersist=60s’, ‘-o’, ‘ControlPath=/Users/asahli/.ansible/cp/ansible-ssh-%h-%p-%r’, ‘-o’, ‘Port=2222’, ‘-o’, ‘IdentityFile=/Users/asahli/.vagrant.d/insecure_private_key’, ‘-o’, ‘KbdInteractiveAuthentication=no’, ‘-o’, ‘PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey’, ‘-o’, ‘PasswordAuthentication=no’, ‘-o’, ‘User=vagrant’, ‘-o’, ‘ConnectTimeout=10’, ‘127.0.0.1’, “/bin/sh -c ‘mkdir -p /tmp/ansible-1391975068.22-50068957235035 && chmod a+rx /tmp/ansible-1391975068.22-50068957235035 && echo /tmp/ansible-1391975068.22-50068957235035’”]
<127.0.0.1> REMOTE_MODULE command /home/tomcat/apache-tomcat-7.0.42/bin/startup.sh
<127.0.0.1> PUT /var/folders/vj/fw7zgzj93j371115rb1mtvv00000gn/T/tmpcOMgD0 TO /tmp/ansible-1391975068.22-50068957235035/command
<127.0.0.1> EXEC [‘ssh’, ‘-tt’, ‘-vvv’, ‘-o’, ‘ControlMaster=auto’, ‘-o’, ‘ControlPersist=60s’, ‘-o’, ‘ControlPath=/Users/asahli/.ansible/cp/ansible-ssh-%h-%p-%r’, ‘-o’, ‘Port=2222’, ‘-o’, ‘IdentityFile=/Users/asahli/.vagrant.d/insecure_private_key’, ‘-o’, ‘KbdInteractiveAuthentication=no’, ‘-o’, ‘PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey’, ‘-o’, ‘PasswordAuthentication=no’, ‘-o’, ‘User=vagrant’, ‘-o’, ‘ConnectTimeout=10’, ‘127.0.0.1’, “/bin/sh -c ‘chmod a+r /tmp/ansible-1391975068.22-50068957235035/command’”]
<127.0.0.1> EXEC [‘ssh’, ‘-tt’, ‘-vvv’, ‘-o’, ‘ControlMaster=auto’, ‘-o’, ‘ControlPersist=60s’, ‘-o’, ‘ControlPath=/Users/asahli/.ansible/cp/ansible-ssh-%h-%p-%r’, ‘-o’, ‘Port=2222’, ‘-o’, ‘IdentityFile=/Users/asahli/.vagrant.d/insecure_private_key’, ‘-o’, ‘KbdInteractiveAuthentication=no’, ‘-o’, ‘PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey’, ‘-o’, ‘PasswordAuthentication=no’, ‘-o’, ‘User=vagrant’, ‘-o’, ‘ConnectTimeout=10’, ‘127.0.0.1’, ‘/bin/sh -c 'sudo -k && sudo -H -S -p “[sudo via ansible, key=pqvlljvxxezlskhjkospaalznznwlzdy] password: " -u tomcat /bin/sh -c '”'“'echo SUDO-SUCCESS-pqvlljvxxezlskhjkospaalznznwlzdy; /usr/bin/python /tmp/ansible-1391975068.22-50068957235035/command'”'"''’]
<127.0.0.1> EXEC [‘ssh’, ‘-tt’, ‘-vvv’, ‘-o’, ‘ControlMaster=auto’, ‘-o’, ‘ControlPersist=60s’, ‘-o’, ‘ControlPath=/Users/asahli/.ansible/cp/ansible-ssh-%h-%p-%r’, ‘-o’, ‘Port=2222’, ‘-o’, ‘IdentityFile=/Users/asahli/.vagrant.d/insecure_private_key’, ‘-o’, ‘KbdInteractiveAuthentication=no’, ‘-o’, ‘PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey’, ‘-o’, ‘PasswordAuthentication=no’, ‘-o’, ‘User=vagrant’, ‘-o’, ‘ConnectTimeout=10’, ‘127.0.0.1’, “/bin/sh -c ‘rm -rf /tmp/ansible-1391975068.22-50068957235035/ >/dev/null 2>&1’”]
changed: [tp-web-proxy] => {“changed”: true, “cmd”: [“/home/tomcat/apache-tomcat-7.0.42/bin/startup.sh”], “delta”: “0:00:00.006908”, “end”: “2014-02-09 19:44:28.235406”, “item”: “”, “rc”: 0, “start”: “2014-02-09 19:44:28.228498”, “stderr”: “”, “stdout”: “Using CATALINA_BASE: /home/tomcat/apache-tomcat-7.0.42\nUsing CATALINA_HOME: /home/tomcat/apache-tomcat-7.0.42\nUsing CATALINA_TMPDIR: /home/tomcat/apache-tomcat-7.0.42/temp\nUsing JRE_HOME: /opt/java/jdk1.7.0_51\nUsing CLASSPATH: /home/tomcat/apache-tomcat-7.0.42/bin/bootstrap.jar:/home/tomcat/apache-tomcat-7.0.42/bin/tomcat-juli.jar”}
On IRC somebody gave me that hint: “something that tomcat wants (from your shell env) seems like it’s missing from running the command without a terminal started”. But I can’t find out what’s missing.
Does somebody know this problem?
Thanks for your help!