mirror of
https://bitbucket.org/atlassian/dc-deployments-automation.git
synced 2025-12-13 16:33:08 -06:00
171 lines
6.3 KiB
YAML
171 lines
6.3 KiB
YAML
---
|
||
|
||
- name: Create server config
|
||
ansible.builtin.template:
|
||
src: server.xml.j2
|
||
dest: "{{ atl_product_installation_versioned }}/apache-tomcat/conf/server.xml"
|
||
|
||
- name: Set the minimum heap size (Xms)
|
||
ansible.builtin.lineinfile:
|
||
path: "{{ atl_product_installation_versioned }}/apache-tomcat/bin/setenv.sh"
|
||
regexp: '^(.*)Xms(\d+\w)(\s.*)$'
|
||
line: '\1Xms{{ atl_jvm_heap }}\3'
|
||
backrefs: yes
|
||
|
||
- name: Set the maxmimum heap size (Xmx)
|
||
ansible.builtin.lineinfile:
|
||
path: "{{ atl_product_installation_versioned }}/apache-tomcat/bin/setenv.sh"
|
||
regexp: '^(.*)Xmx(\d+\w)(\s.*)$'
|
||
line: '\1Xmx{{ atl_jvm_heap }}\3'
|
||
backrefs: yes
|
||
|
||
- name: Set Crowd home directory in crowd-init.properties file
|
||
ansible.builtin.lineinfile:
|
||
path: "{{ atl_product_installation_versioned }}/crowd-webapp/WEB-INF/classes/crowd-init.properties"
|
||
line: 'crowd.home={{ atl_product_home }}'
|
||
|
||
- name: Export CATALINA_OPTS in setenv.sh
|
||
ansible.builtin.lineinfile:
|
||
path: '{{ atl_product_installation_versioned }}/apache-tomcat/bin/setenv.sh'
|
||
line: 'export CATALINA_OPTS'
|
||
|
||
- name: CATALINA_OPTS to list
|
||
ansible.builtin.set_fact:
|
||
catalina_ops_list: "{{ catalina_ops_list|default([]) }} + {{ (item | trim | regex_replace('^-')).split(' -') }}"
|
||
loop:
|
||
- '{{ atl_catalina_opts }}'
|
||
- '{{ atl_catalina_opts_extra }}'
|
||
|
||
- name: CATALINA_OPTS unique and sorted
|
||
ansible.builtin.set_fact:
|
||
catalina_opts: "{{ query('flattened', catalina_ops_list) | reject('equalto', '') | unique | sort }}"
|
||
|
||
- name: Set CATALINA_OPTS in setenv.sh
|
||
ansible.builtin.blockinfile:
|
||
block: "{{ lookup('template', 'templates/catalina_opts.j2') }}"
|
||
path: "{{ atl_product_installation_versioned }}/apache-tomcat/bin/setenv.sh"
|
||
insertbefore: "^export CATALINA_OPTS$"
|
||
marker: "# {mark} ANSIBLE MANAGED CATALINA_OPTS"
|
||
|
||
- name: Set JAVA_HOME
|
||
ansible.builtin.lineinfile:
|
||
path: "{{ atl_product_installation_versioned }}/apache-tomcat/bin/setenv.sh"
|
||
insertafter: "EOF"
|
||
line: "export JAVA_HOME={{ atl_java_home }}"
|
||
|
||
- name: Create application directories
|
||
ansible.builtin.file:
|
||
path: "{{ item }}"
|
||
state: directory
|
||
mode: 0750
|
||
owner: "{{ atl_product_user }}"
|
||
group: "{{ atl_product_user }}"
|
||
with_items:
|
||
- "{{ atl_product_home }}"
|
||
- "{{ atl_product_home_shared }}"
|
||
- "{{ atl_product_shared_plugins }}"
|
||
changed_when: false # For Molecule idempotence check
|
||
|
||
- name: Limit permissions on the installation directory
|
||
ansible.builtin.file:
|
||
path: "{{ atl_product_installation_versioned }}"
|
||
owner: "{{ atl_product_user }}"
|
||
group: "{{ atl_product_user }}"
|
||
mode: "u=rwX,g=rX,o=rX"
|
||
recurse: true
|
||
with_items:
|
||
- "{{ atl_installer_temp }}"
|
||
- "{{ atl_product_installation_versioned }}"
|
||
- "{{ atl_product_version_cache_dir }}"
|
||
changed_when: false # For Molecule idempotence check
|
||
|
||
- name: Grant access to the product working directories
|
||
ansible.builtin.file:
|
||
path: "{{ item }}"
|
||
state: directory
|
||
mode: "u=rwX,g=rX,o-rwx"
|
||
owner: "{{ atl_product_user }}"
|
||
group: "{{ atl_product_user }}"
|
||
recurse: true
|
||
with_items:
|
||
- "{{ atl_product_installation_versioned }}/apache-tomcat/logs"
|
||
- "{{ atl_product_installation_versioned }}/apache-tomcat/temp"
|
||
- "{{ atl_product_installation_versioned }}/apache-tomcat/work"
|
||
changed_when: false # For Molecule idempotence check
|
||
|
||
- name: Create conf/Catalina directory owned by product so catalina.out logging works
|
||
ansible.builtin.file:
|
||
path: "{{ atl_product_installation_versioned }}/conf/Catalina"
|
||
state: directory
|
||
mode: "u=rwX,g=rX,o-rwx"
|
||
owner: "{{ atl_product_user }}"
|
||
group: "{{ atl_product_user }}"
|
||
changed_when: false # For Molecule idempotence check
|
||
|
||
- name: Symlink Crowd shared home directory
|
||
ansible.builtin.file:
|
||
src: "{{ atl_product_home_shared }}"
|
||
dest: "{{ atl_product_home }}/shared"
|
||
state: link
|
||
owner: "{{ atl_product_user }}"
|
||
group: "{{ atl_product_user }}"
|
||
changed_when: false # For Molecule idempotence check
|
||
|
||
- name: Assert baseurl to same as atl_proxy_name
|
||
community.postgresql.postgresql_query:
|
||
login_host: "{{ atl_db_host }}"
|
||
login_user: "{{ atl_jdbc_user }}"
|
||
login_password: "{{ atl_jdbc_password }}"
|
||
db: "{{ atl_jdbc_db_name }}"
|
||
query: >
|
||
update cwd_property set property_value=%s
|
||
where property_name = 'base.url'
|
||
positional_args:
|
||
- "{{ atl_tomcat_scheme }}://{{ atl_proxy_name }}{{ atl_tomcat_contextpath }}"
|
||
when:
|
||
- atl_proxy_name is defined
|
||
- atl_tomcat_scheme is defined
|
||
- db_created is undefined or not db_created.changed
|
||
tags:
|
||
- skip_on_stack_update
|
||
ignore_errors: yes # For Molecule as it has no db test framework included
|
||
|
||
- name: Check that crowd.cfg.xml exists
|
||
ansible.builtin.stat:
|
||
path: "{{ atl_product_home_shared }}/crowd.cfg.xml"
|
||
register: crowd_cfg_stat_result
|
||
|
||
- block:
|
||
- name: Assert JDBC password to same as atl_jdbc_password
|
||
community.general.xml:
|
||
path: "{{ atl_product_home_shared }}/crowd.cfg.xml"
|
||
xpath: "/application-configuration/properties/property[@name='hibernate.connection.password']"
|
||
value: "{{ atl_jdbc_password }}"
|
||
|
||
- name: Assert JDBC url to same as atl_jdbc_url
|
||
community.general.xml:
|
||
path: "{{ atl_product_home_shared }}/crowd.cfg.xml"
|
||
xpath: "/application-configuration/properties/property[@name='hibernate.connection.url']"
|
||
value: "{{ atl_jdbc_url }}?reWriteBatchedInserts=true"
|
||
|
||
- name: Assert hibernate.c3p0.max_size to same as atl_db_poolmaxsize
|
||
community.general.xml:
|
||
path: "{{ atl_product_home_shared }}/crowd.cfg.xml"
|
||
xpath: "/application-configuration/properties/property[@name='hibernate.c3p0.max_size']"
|
||
value: "{{ atl_db_poolmaxsize }}"
|
||
when: atl_db_poolmaxsize is defined
|
||
|
||
- name: Assert hibernate.c3p0.min_size to same as atl_db_poolminsize
|
||
community.general.xml:
|
||
path: "{{ atl_product_home_shared }}/crowd.cfg.xml"
|
||
xpath: "/application-configuration/properties/property[@name='hibernate.c3p0.min_size']"
|
||
value: "{{ atl_db_poolminsize }}"
|
||
when: atl_db_poolminsize is defined
|
||
|
||
when: crowd_cfg_stat_result.stat.exists
|
||
|
||
- name: Remove crowd.xml to prevent duplicates from appearing in cluster reporting
|
||
ansible.builtin.file:
|
||
path: "{{ atl_product_installation_versioned }}/apache-tomcat/conf/Catalina/localhost/crowd.xml"
|
||
state: absent
|