Introduction
If you need to install a Tomcat that version that is not available in the Debian format, usually the newer versions, and would like to mimic the Debian installation, we can do the following steps either manually or automated via tools like Ansible.
--- - name: create tomcat7 group group: name: tomcat7 gid: 3013 state: present - name: create tomcat7 user user: name: tomcat7 group: tomcat7 uid: 3013 shell: /bin/bash - name: reconstruct tomcat7 directories file: path: "{{ item.dir }}" state: directory owner: "{{ item.owner }}" group: "{{ item.group }}" mode: "{{ item.mode }}" with_items: - { dir:/usr/share/tomcat7/bin,owner:root,group: root,mode: '0755' } - { dir:/usr/share/tomcat7/lib,owner:root,group: root,mode:'0755' } - { dir:/usr/share/tomcat7-admin,owner:root,group:root,mode:'0755' } - { dir:/var/lib/tomcat7, owner: root, group: root, mode: '0755' } - { dir:/etc/tomcat7, owner:root, group:tomcat7, mode:'0755' } - { dir:/etc/tomcat7/policy.d,owner:root,group:tomcat7,mode:'0755' } - { dir:/var/cache/tomcat7,owner:tomcat7,group:adm,mode: '0750' } - { dir:/var/log/tomcat7,owner:tomcat7,group:tomcat7,mode: '0644' } - name: Install prerequisites for Trusty apt: name: "{{ item }}" state: present with_items: - libpostgresql-jdbc-java - tomcat7-common - name: download tomcat7 zip get_url: url: http://mirrors.advancedhosters.com/apache/tomcat/tomcat-7/{{tomcat7.pkgversion}}/bin/apache-tomcat-{{tomcat7.pkgversion}}.zip dest: /tmp - name: unarchive tomcat7 zip file unarchive: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}.zip dest: /tmp remote_src: yes - name: copy tomcat7 library files to /usr/share/java copy: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}/lib/{{ item.src }}.jar dest: /usr/share/java/{{ item.dest }}-{{tomcat7.pkgversion}}.jar owner: root group: root mode: '0644' remote_src: yes with_items: - { src: annotations-api, dest: tomcat-annotations-api } - { src: catalina, dest: tomcat-catalina } - { src: catalina-ant, dest: catalina-ant } - { src: catalina-ha, dest: tomcat-catalina-ha } - { src: catalina-tribes, dest: catalina-tribes } - { src: ecj-4.4.2, dest: ecj-4.4.2 } - { src: el-api, dest: el-api-2.2 } - { src: jasper-el, dest: tomcat-jasper-el } - { src: jasper, dest: tomcat-jasper } - { src: jsp-api, dest: jsp-api-2.2 } - { src: servlet-api, dest: servlet-api-3.0 } - { src: tomcat-api, dest: tomcat-api } - { src: tomcat-coyote, dest: tomcat-coyote } - { src: tomcat-i18n-de, dest: tomcat-i18n-de } - { src: tomcat-i18n-es, dest: tomcat-i18n-es } - { src: tomcat-i18n-fr, dest: tomcat-i18n-fr } - { src: tomcat-i18n-ja, dest: tomcat-i18n-ja } - { src: tomcat-i18n-ko, dest: tomcat-i18n-ko } - { src: tomcat-i18n-ru, dest: tomcat-i18n-ru } - { src: tomcat-jdbc, dest: tomcat-jdbc } - { src: tomcat-util, dest: tomcat-util } - name: copy tomcat-juli bin files to /usr/share/java copy: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}/bin/tomcat-juli.jar dest: /usr/share/java/tomcat-juli-{{tomcat7.pkgversion}}.jar owner: root group: root mode: '0644' remote_src: yes - name: create symlink for tomcat7 library files in /usr/share/java file: src: /usr/share/java/{{ item.src }}-{{tomcat7.pkgversion}}.jar dest: "/usr/share/java/{{ item.dest }}.jar" owner: root group: root state: link with_items: - { src: tomcat-annotations-api, dest: tomcat-annotations-api } - { src: tomcat-catalina, dest: tomcat-catalina } - { src: catalina-ant, dest: catalina-ant } - { src: tomcat-catalina-ha, dest: tomcat-catalina-ha } - { src: catalina-tribes, dest: catalina-tribes } - { src: el-api-2.2, dest: tomcat-el-api-2.2 } - { src: ecj-4.4.2, dest: ecj } - { src: ecj-4.4.2, dest: eclipse-ecj } - { src: tomcat-jasper-el, dest: tomcat-jasper-el } - { src: tomcat-jasper, dest: tomcat-jasper } - { src: jsp-api-2.2, dest: tomcat-jsp-api-2.2 } - { src: servlet-api-3.0, dest: tomcat-servlet-api-3.0 } - { src: tomcat-api, dest: tomcat-api } - { src: tomcat-coyote, dest: tomcat-coyote } - { src: tomcat-i18n-de, dest: tomcat-i18n-de } - { src: tomcat-i18n-es, dest: tomcat-i18n-es } - { src: tomcat-i18n-fr, dest: tomcat-i18n-fr } - { src: tomcat-i18n-ja, dest: tomcat-i18n-ja } - { src: tomcat-i18n-ko, dest: tomcat-i18n-ko } - { src: tomcat-i18n-ru, dest: tomcat-i18n-ru } - { src: tomcat-jdbc , dest: tomcat-jdbc } - { src: tomcat-util, dest: tomcat-util } - { src: tomcat-juli, dest: tomcat-juli } - name: copy tomcat7 library files to /usr/share/tomcat7/lib copy: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}/lib/{{ item.src }}.jar dest: /usr/share/tomcat7/lib/{{ item.dest }}.jar owner: root group: root mode: '0644' remote_src: yes with_items: - { src: tomcat7-websocket, dest: tomcat7-websocket } - { src: websocket-api, dest: websocket-api } - { src: tomcat-dbcp, dest: tomcat-dbcp } - name: create symlink for tomcat7 library files in /usr/share/tomcat7/lib file: src: /usr/share/java/{{ item.src }}-{{tomcat7.pkgversion}}.jar dest: /usr/share/tomcat7/lib/{{ item.dest }}.jar owner: root group: root state: link with_items: - { src: tomcat-annotations-api, dest: annotations-api } - { src: catalina-ant, dest: catalina-ant } - { src: tomcat-catalina-ha, dest: catalina-ha } - { src: tomcat-catalina, dest: catalina } - { src: tomcat-catalina-jmx-remote, dest: catalina-jmx-remote } - { src: catalina-tribes, dest: catalina-tribes } - { src: tomcat-jasper-el, dest: jasper-el } - { src: tomcat-jasper, dest: jasper } - { src: tomcat-jdbc, dest: java-tomcat-jdbc } - { src: tomcat-api, dest: tomcat-api } - { src: tomcat-coyote, dest: tomcat-coyote } - { src: tomcat-i18n-de, dest: tomcat-i18n-de } - { src: tomcat-i18n-es, dest: tomcat-i18n-es } - { src: tomcat-i18n-fr, dest: tomcat-i18n-fr } - { src: tomcat-i18n-ja, dest: tomcat-i18n-ja } - { src: tomcat-i18n-ko, dest: tomcat-i18n-ko } - { src: tomcat-i18n-ru, dest: tomcat-i18n-ru } - { src: tomcat-jdbc, dest: tomcat-jdbc } - { src: tomcat-util, dest: tomcat-util } - name: create symlink for java library files in /usr/share/tomcat7/lib file: src: /usr/share/java/{{ item.src }}.jar dest: /usr/share/tomcat7/lib/{{ item.dest }}.jar owner: root group: root state: link with_items: - { src: commons-dbcp, dest: commons-dbcp } - { src: commons-pool, dest: commons-pool } - { src: tomcat-servlet-api-3.0, dest: servlet-api } - { src: tomcat-el-api-2.2, dest: el-api } - { src: tomcat-jsp-api-2.2, dest: jsp-api } - name: copy tomcat7 bin files to /usr/share/tomcat7/bin copy: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}/bin/{{ item.src }} dest: /usr/share/tomcat7/bin/{{ item.dest }} owner: root group: root mode: "{{ item.mode }}" remote_src: yes with_items: - { src: bootstrap.jar, dest: bootstrap.jar, mode: '0644' } - { src: catalina.sh, dest: catalina.sh, mode: '0755' } - { src: catalina-tasks.xml, dest: catalina-tasks.xml, mode: '0644'} - { src: configtest.sh, dest: configtest.sh, mode: '0755' } - { src: daemon.sh, dest: daemon.sh, mode: '0755' } - { src: digest.sh, dest: digest.sh, mode: '0755' } - { src: setclasspath.sh, dest: setclasspath.sh, mode: '0755' } - { src: shutdown.sh, dest: shutdown.sh, mode: '0755' } - { src: startup.sh, dest: startup.sh, mode: '0755' } - { src: tool-wrapper.sh, dest: tool-wrapper.sh, mode: '0755' } - { src: version.sh, dest: version.sh, mode: '0755' } - name: create symlink for java library files in /usr/share/tomcat7/bin file: src: /usr/share/java/tomcat-juli.jar dest: /usr/share/tomcat7/bin/tomcat-juli.jar owner: root group: root state: link - name: copy tomcat7 conf files to /etc/tomcat7 copy: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}/conf/{{ item.src }} dest: /etc/tomcat7/{{ item.dest }} owner: root group: tomcat7 mode: "{{ item.mode }}" remote_src: yes with_items: - { src: catalina.properties, dest: catalina.properties, mode:'0640'} - { src: context.xml, dest: context.xml, mode: '0664' } - { src: logging.properties, dest: logging.properties, mode: '0640'} - { src: server.xml, dest: server.xml, mode: '0664' } - { src: tomcat-users.xml, dest: tomcat-users.xml, mode: '0640' } - { src: tomcat-users.xsd, dest: tomcat-users.xsd, mode: '0640' } - { src: web.xml, dest: web.xml, mode: '0640' } - name: copy tomcat7 catalina policy to /var/cache copy: src: /tmp/apache-tomcat-{{tomcat7.pkgversion}}/conf/catalina.policy dest: /var/cache/tomcat7/catalina.policy owner: root group: root mode: '0644' remote_src: yes - name: create symlink for tomcat files in /var/lib/tomcat7 file: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root state: link with_items: - { src: /etc/tomcat7, dest: /var/lib/tomcat7/conf } - { src: /var/log/tomcat7, dest: /var/lib/tomcat7/logs } - { src: /var/cache/tomcat7, dest: /var/lib/tomcat7/work } - name: copy over tomcat7 policies copy: src: "{{ item }}" dest: /var/lib/tomcat7/conf/policy.d/{{ item }} owner: root group: root mode: '0640' with_items: - 01system.policy - 02debian.policy - 03catalina.policy - 04webapps.policy - 50local.policy - name: copy tomcat7 start script copy: src: tomcat7_init dest: /etc/init.d/tomcat7 owner: root group: root mode: '0755' - name: copy tomcat7 admin files to /usr/share/tomcat7-admin shell: cp -r /tmp/apache-tomcat-{{tomcat7.pkgversion}}/webapps/* /usr/share/tomcat7-admin/