diff --git a/tasks/main.yml b/tasks/main.yml index b64c4c5..cc02aad 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,164 +2,206 @@ # # Note: the library role 'tomcat' is a dependency # -- name: disable the tomcat main instance - service: name='tomcat{{ tomcat_version }}' state=stopped enabled=no - when: not tomcat_service_enabled - tags: [ 'tomcat', 'tomcat_instances' ] +- name: Manage the tomcat main instance + block: + - name: disable the tomcat main instance + service: + name: 'tomcat{{ tomcat_version }}' + state: stopped + enabled: false + when: not tomcat_service_enabled -- name: Create a tomcat user for each instance if needed - user: name={{ item.user }} home={{ item.user_home }} createhome=false shell={{ item.user_shell | default('/bin/false') }} - with_items: '{{ tomcat_m_instances }}' - when: - - not tomcat_m_use_default_user | bool - - item.user != "tomcat{{ tomcat_version }}" - register: tomcat_first_install - tags: [ 'tomcat', 'tomcat_instances' ] + tags: ['tomcat', 'tomcat_instances'] -- name: Create a tomcat user if needed - user: name={{ tomcat_m_default_user }} home={{ tomcat_m_instances_base_path }} createhome=false shell={{ tomcat_m_default_user_shell }} - when: - - tomcat_m_use_default_user | bool - - tomcat_m_default_user != "tomcat{{ tomcat_version }}" - register: tomcat_first_install - tags: [ 'tomcat', 'tomcat_instances' ] +- name: Manage the tomcat user and directory tree + block: + - name: Create a tomcat user for each instance if needed + user: + name: '{{ item.user }}' + home: '{{ item.user_home }}' + createhome: false + shell: "{{ item.user_shell | default('/bin/false') }}" + loop: '{{ tomcat_m_instances }}' + when: + - not tomcat_m_use_default_user | bool + - item.user != "tomcat{{ tomcat_version }}" + register: tomcat_first_install -- name: Create the instances directory trees - file: dest={{ item.0.instance_path }}/{{ item[1] }} owner={{ item.0.user }} group={{ item.0.user }} mode=0755 state=directory - with_nested: - - '{{ tomcat_m_instances }}' - - [ 'common/classes', 'conf/Catalina/localhost', 'conf/policy.d', 'lib', 'server/classes', 'shared/classes', 'webapps' ] - register: tomcat_first_install - tags: [ 'tomcat', 'tomcat_instances' ] + - name: Create a global tomcat user if needed + user: + name: '{{ tomcat_m_default_user }}' + home: '{{ tomcat_m_instances_base_path }}' + createhome: false + shell: '{{ tomcat_m_default_user_shell }}' + when: + - tomcat_m_use_default_user | bool + - tomcat_m_default_user != "tomcat{{ tomcat_version }}" + register: tomcat_first_install -- name: Create the tomcat logs base directory - file: - dest: '{{ tomcat_m_instances_logdir_base }}' - state: directory - mode: 0755 - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_log_dir' ] + - name: Create the instances directory trees + file: + dest: '{{ item.0.instance_path }}/{{ item[1] }}' + owner: '{{ item.0.user }}' + group: '{{ item.0.user }}' + mode: 0755 + state: directory + with_nested: + - '{{ tomcat_m_instances }}' + - ['common/classes', 'conf/Catalina/localhost', 'conf/policy.d', 'lib', 'server/classes', 'shared/classes', 'webapps'] + register: tomcat_first_install -- name: Create the instances log dirs - file: dest={{ tomcat_m_instances_logdir_base }}/{{ item.http_port }} owner={{ item.user }} group={{ item.user }} mode='0750' state=directory - with_items: '{{ tomcat_m_instances }}' - register: tomcat_first_install - when: not tomcat_m_expose_log_directory - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_log_dir' ] + - name: Create the tomcat logs base directory + file: + dest: '{{ tomcat_m_instances_logdir_base }}' + state: directory + mode: 0755 + tags: ['tomcat', 'tomcat_instances', 'tomcat_log_dir'] -- name: Create log dirs, readable by the user that runs the http service - file: dest={{ tomcat_m_instances_logdir_base }}/{{ item.http_port }} owner={{ item.user }} group='www-data' mode='0750' state=directory - with_items: '{{ tomcat_m_instances }}' - register: tomcat_first_install - when: tomcat_m_expose_log_directory - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_log_dir' ] + - name: Create the instances log dirs + file: + dest: '{{ tomcat_m_instances_logdir_base }}/{{ item.http_port }}' + owner: '{{ item.user }}' + group: '{{ item.user }}' + mode: '0750' + state: directory + loop: '{{ tomcat_m_instances }}' + register: tomcat_first_install + when: not tomcat_m_expose_log_directory + tags: ['tomcat', 'tomcat_instances', 'tomcat_log_dir'] -- name: Create the instances work dirs - file: dest={{ tomcat_m_cache_base }}/{{ item.http_port }} owner={{ item.user }} group={{ item.user }} mode=0755 state=directory - with_items: '{{ tomcat_m_instances }}' - register: tomcat_first_install - tags: [ 'tomcat', 'tomcat_instances' ] + - name: Create log dirs, readable by the user that runs the http service + file: + dest: '{{ tomcat_m_instances_logdir_base }}/{{ item.http_port }}' + owner: '{{ item.user }}' + group: 'www-data' + mode: '0750' + state: directory + loop: '{{ tomcat_m_instances }}' + register: tomcat_first_install + when: tomcat_m_expose_log_directory + tags: ['tomcat', 'tomcat_instances', 'tomcat_log_dir'] -- name: Create links to work dir inside the instances directory tree - file: src={{ tomcat_m_cache_base }}/{{ item.http_port }} dest={{ item.instance_path }}/work state=link - with_items: '{{ tomcat_m_instances }}' - register: tomcat_first_install - tags: [ 'tomcat', 'tomcat_instances' ] + - name: Create the instances work dirs + file: + dest: '{{ tomcat_m_cache_base }}/{{ item.http_port }}' + owner: '{{ item.user }}' + group: '{{ item.user }}' + mode: 0755 + state: directory + loop: '{{ tomcat_m_instances }}' + register: tomcat_first_install -- name: Create links to log dir inside the instances directory tree - file: src={{ tomcat_m_instances_logdir_base }}/{{ item.http_port }} dest={{ item.instance_path }}/logs state=link - with_items: '{{ tomcat_m_instances }}' - register: tomcat_first_install - tags: [ 'tomcat', 'tomcat_instances' ] + - name: Create links to work dir inside the instances directory tree + file: + src: '{{ tomcat_m_cache_base }}/{{ item.http_port }}' + dest: '{{ item.instance_path }}/work' + state: link + loop: '{{ tomcat_m_instances }}' + register: tomcat_first_install -- name: Create the catalina tmp directory - file: dest={{ item.catalina_tmp_directory }} state=directory owner={{ item.user }} group={{ item.user }} mode=0700 - with_items: '{{ tomcat_m_instances }}' - when: item.catalina_tmp_directory is defined - tags: [ 'tomcat', 'tomcat_instances' ] + - name: Create links to log dir inside the instances directory tree + file: + src: '{{ tomcat_m_instances_logdir_base }}/{{ item.http_port }}' + dest: '{{ item.instance_path }}/logs' + state: link + loop: '{{ tomcat_m_instances }}' + register: tomcat_first_install + + - name: Create the catalina tmp directory + file: + dest: '{{ item.catalina_tmp_directory }}' + state: directory + owner: '{{ item.user }}' + group: '{{ item.user }}' + mode: 0700 + loop: '{{ tomcat_m_instances }}' + when: item.catalina_tmp_directory is defined + + tags: ['tomcat', 'tomcat_instances'] - name: Populate the instances conf directory copy: src={{ item[1] }} dest={{ item.0.instance_path }}/conf/{{ item[1] }} owner={{ item.0.user }} group={{ item.0.user }} mode=0640 with_nested: - '{{ tomcat_m_instances }}' - - [ 'context.xml' ] + - ['context.xml'] notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances' ] + tags: ['tomcat', 'tomcat_instances'] - name: Install catalina.properties template: src={{ item[1] }}.j2 dest={{ item.0.instance_path }}/conf/{{ item[1] }} owner={{ item.0.user }} group={{ item.0.user }} mode=0640 with_nested: - '{{ tomcat_m_instances }}' - - [ 'catalina.properties' ] + - ['catalina.properties'] notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_catalina_properties' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_catalina_properties'] - name: Populate the instances conf/policy.d directory copy: src=policy.d/{{ item[1] }} dest={{ item.0.instance_path }}/conf/policy.d/{{ item[1] }} owner={{ item.0.user }} group={{ item.0.user }} mode=0640 with_nested: - '{{ tomcat_m_instances }}' - - [ '01system.policy', '02debian.policy', '03catalina.policy', '04webapps.policy', '50local.policy' ] + - ['01system.policy', '02debian.policy', '03catalina.policy', '04webapps.policy', '50local.policy'] notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances' ] + tags: ['tomcat', 'tomcat_instances'] - name: Install logging.properties if we do not use log4j for the tomcat logging copy: src={{ item[1] }} dest={{ item.0.instance_path }}/conf/{{ item[1] }} owner={{ item.0.user }} group={{ item.0.user }} mode=0640 with_nested: - '{{ tomcat_m_instances }}' - - [ 'logging.properties' ] + - ['logging.properties'] when: - tomcat_use_log4j is defined - not tomcat_use_log4j | bool notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances' ] + tags: ['tomcat', 'tomcat_instances'] - name: Install the server.xml conf file template: src=tomcat-server.xml.j2 dest={{ item.instance_path }}/conf/server.xml owner={{ item.user }} group={{ item.user }} mode=0640 with_items: '{{ tomcat_m_instances }}' notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_serverxml' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_serverxml'] - name: Install the web.xml file template: src=tomcat-web.xml.j2 dest={{ item.instance_path }}/conf/web.xml owner={{ item.user }} group={{ item.user }} mode=0640 with_items: '{{ tomcat_m_instances }}' notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_serverxml' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_serverxml'] - name: Install the tomcat-admin package if the host-manager or manager apps are required apt: pkg=tomcat{{ tomcat_version }}-admin state={{ tomcat_pkg_state }} cache_valid_time=1800 update_cache=yes when: tomcat_m_host_manager_install | bool or tomcat_m_manager_install | bool - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_host_manager', 'tomcat_manager' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_host_manager', 'tomcat_manager'] - name: Install the catalina configuration for the tomcat manager template: src=tomcat-manager.xml.j2 dest={{ item.instance_path }}/conf/Catalina/localhost/manager.xml owner={{ item.user }} group={{ item.user }} mode=0640 with_items: '{{ tomcat_m_instances }}' when: tomcat_m_manager_install | bool notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_manager' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_manager'] - name: Install the catalina configuration for the tomcat host manager template: src=tomcat-host-manager.xml.j2 dest={{ item.instance_path }}/conf/Catalina/localhost/host-manager.xml owner={{ item.user }} group={{ item.user }} mode=0640 with_items: '{{ tomcat_m_instances }}' when: tomcat_m_host_manager_install | bool notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_host_manager' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_host_manager'] - name: Install the catalina configuration for the tomcat manager template: src=tomcat-users.xml.j2 dest={{ item.instance_path }}/conf/tomcat-users.xml owner={{ item.user }} group={{ item.user }} mode=0640 with_items: '{{ tomcat_m_instances }}' notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_host_manager', 'tomcat_manager' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_host_manager', 'tomcat_manager'] - name: Install the instances startup scripts template: src=tomcat-instance.init.j2 dest=/etc/init.d/tomcat-instance-{{ item.http_port }} mode=0755 owner=root group=root with_items: '{{ tomcat_m_instances }}' register: reload_systemd - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_init' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_init'] - name: Install the tomcat instances default file template: src=tomcat-default.j2 dest=/etc/default/tomcat-instance-{{ item.http_port }} mode=0640 owner=root group={{ item.user }} with_items: '{{ tomcat_m_instances }}' notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_default', 'jdk' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_default', 'jdk'] - name: Reload the systemd daemon if we are running on a systemd-backed server command: systemctl daemon-reload @@ -172,12 +214,12 @@ with_items: '{{ tomcat_m_instances }}' notify: tomcat multiple-instances restart when: tomcat_m_jndi_pool | bool - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_contextxml', 'jdk' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf', 'tomcat_contextxml', 'jdk'] - name: Install a logrotate entry for the access log file template: src=tomcat.logrotate.j2 dest=/etc/logrotate.d/tomcat_instance-{{ item.http_port }} owner=root group=root mode=0644 with_items: '{{ tomcat_m_instances }}' - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_conf' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_conf'] - name: Install the jmx authorization file template: src=jmxremote.passwd.j2 dest={{ item.instance_path }}/conf/jmxremote.passwd owner={{ item.user }} group={{ item.user }} mode=0600 @@ -188,7 +230,7 @@ - item.jmx_enabled | bool - item.jmx_auth_enabled | bool notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_jmx' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_jmx'] - name: Install the jmx role file copy: src=jmxremote.access dest={{ item.instance_path }}/conf/jmxremote.access owner={{ item.user }} group={{ item.user }} mode=0644 @@ -199,19 +241,24 @@ - item.jmx_enabled | bool - item.jmx_auth_enabled | bool notify: tomcat multiple-instances restart - tags: [ 'tomcat', 'tomcat_instances', 'tomcat_jmx' ] + tags: ['tomcat', 'tomcat_instances', 'tomcat_jmx'] - name: Start all the tomcat instances - service: name='tomcat-instance-{{ item.http_port }}' state=started sleep=20 - with_items: '{{ tomcat_m_instances }}' + service: + name: 'tomcat-instance-{{ item.http_port }}' + state: started + sleep: 20 + loop: '{{ tomcat_m_instances }}' when: - tomcat_first_install.changed | bool - tomcat_m_start_instances | bool - tags: [ 'tomcat', 'tomcat_instances'] - ignore_errors: True + tags: ['tomcat', 'tomcat_instances'] + ignore_errors: true - name: Enable all the tomcat instances - service: name='tomcat-instance-{{ item.http_port }}' enabled=yes - with_items: '{{ tomcat_m_instances }}' + service: + name: 'tomcat-instance-{{ item.http_port }}' + enabled: true + loop: '{{ tomcat_m_instances }}' when: tomcat_m_enable_instances | bool - tags: [ 'tomcat', 'tomcat_instances'] + tags: ['tomcat', 'tomcat_instances']