From 4d66ed7a75a434a9359a6e22bb2c8195f60de46c Mon Sep 17 00:00:00 2001 From: Adam Brokes Date: Thu, 16 Jul 2020 14:39:32 +1000 Subject: [PATCH] include vars based on the type of database --- group_vars/aws_node_local.yml | 11 ++++---- roles/database_init/tasks/main.yml | 7 ++++- roles/database_init/tasks/mysql.yml | 28 ++++--------------- roles/database_init/vars/mysql.yml | 10 +++++++ .../{defaults/main.yml => vars/postgres.yml} | 0 roles/jira_config/templates/dbconfig.xml.j2 | 2 ++ 6 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 roles/database_init/vars/mysql.yml rename roles/database_init/{defaults/main.yml => vars/postgres.yml} (100%) diff --git a/group_vars/aws_node_local.yml b/group_vars/aws_node_local.yml index 5f5dc16..24d8b21 100644 --- a/group_vars/aws_node_local.yml +++ b/group_vars/aws_node_local.yml @@ -100,6 +100,11 @@ atl_db_engine_to_db_type_map: rds_postgres: "postgres72" rds_mysql: "mysql57" atl_db_type: "{{ atl_db_engine_to_db_type_map[atl_db_engine] | default('postgres72') }}" +atl_db_general_type_map: + aurora_postgres: "postgres" + rds_postgres: "postgres" + rds_mysql: "mysql" +atl_db_general_type: "{{ atl_db_general_type_map[atl_db_engine] }}" atl_jdbc_db_name: "{{ lookup('env', 'ATL_JDBC_DB_NAME') }}" atl_jdbc_user: "{{ lookup('env', 'ATL_JDBC_USER') }}" @@ -111,11 +116,7 @@ atl_jdbc_template: "{{ lookup('env', 'ATL_JDBC_TEMPLATE') or 'template1' }}" atl_jdbc_query_params_for_engine: aurora_postgres: "?targetServerType=master" rds_mysql: "?useUnicode=true&characterEncoding=UTF8&sessionVariables=default_storage_engine=InnoDB" -atl_jdbc_engine_map: - aurora_postgres: "postgres" - rds_postgres: "postgres" - rds_mysql: "mysql" -atl_jdbc_url: "jdbc:{{ atl_jdbc_engine_map[atl_db_engine] }}://{{ atl_db_host }}:{{ atl_db_port }}/{{ atl_jdbc_db_name }}{{ atl_jdbc_query_params_for_engine[atl_db_engine]| default('') }}" +atl_jdbc_url: "jdbc:{{ atl_db_general_type }}://{{ atl_db_host }}:{{ atl_db_port }}/{{ atl_jdbc_db_name }}{{ atl_jdbc_query_params_for_engine[atl_db_engine]| default('') }}" atl_jvm_heap: "{{ lookup('env', 'ATL_JVM_HEAP') or '2048m' }}" atl_jvm_opts: "{{ lookup('env', 'ATL_JVM_OPTS') or '' }}" diff --git a/roles/database_init/tasks/main.yml b/roles/database_init/tasks/main.yml index 832d24a..0eee13d 100644 --- a/roles/database_init/tasks/main.yml +++ b/roles/database_init/tasks/main.yml @@ -1,4 +1,9 @@ --- +- name: Include database specific configuration + include_vars: + file: + - name: Initialise database - include_tasks: "{{ atl_jdbc_engine_map[atl_db_engine] }}.yml" # TODO this is done to have same tasks for aurora and postgres + include_tasks: "{{ atl_db_general_type }}.yml" # TODO this is done to have same tasks for aurora and postgres + \ No newline at end of file diff --git a/roles/database_init/tasks/mysql.yml b/roles/database_init/tasks/mysql.yml index 533d3bc..7ebb7ad 100644 --- a/roles/database_init/tasks/mysql.yml +++ b/roles/database_init/tasks/mysql.yml @@ -14,13 +14,13 @@ - name: Download and unzip MySQL driver unarchive: - src: https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.21.tar.gz + src: "{{ mysql_jdbc_connector_url }}" dest: /tmp remote_src: yes - name: Copy the MySQL driver copy: - src: /tmp/mysql-connector-java-8.0.21/mysql-connector-java-8.0.21.jar + src: "/tmp/{{ mysql_jdbc_connector }}/{{ mysql_jdbc_connector }}.jar" dest: "{{ atl_product_installation_versioned }}/lib" - name: Create application DB user @@ -42,34 +42,16 @@ login_password: "{{ atl_db_root_password }}" login_port: "{{ atl_db_port }}" name: "{{ atl_jdbc_db_name }}" - encoding: "utf8" # TODO "{{ atl_jdbc_encoding }}" - collation: "utf8_bin" # TODO "{{ atl_jdbc_collation }}" + encoding: utf8mb4 # TODO "{{ atl_jdbc_encoding }}" + collation: "utf8mb4_bin" # TODO "{{ atl_jdbc_collation }}" register: db_created - name: Assert ownership of public schema command: > mysql --user={{ atl_db_root_user }} --password={{ atl_db_root_password }} {{ atl_jdbc_db_name }} --host={{ atl_db_host }} --port={{ atl_db_port }} --batch --skip-column-names - --execute="GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on {{ atl_jdbc_db_name }}.* TO '{{ atl_jdbc_user }}'@'{{ atl_db_host }}' IDENTIFIED BY '{{ atl_jdbc_password }}'; flush privileges;" + --execute="GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX,REFERENCES on {{ atl_jdbc_db_name }}.* TO '{{ atl_jdbc_user }}'@'{{ atl_db_host }}' IDENTIFIED BY '{{ atl_jdbc_password }}'; flush privileges;" no_log: true tags: - new_only - - - -# - name: Grant privs to root user on public schema -# postgresql_query: -# login_host: "{{ atl_db_host }}" -# login_user: "{{ atl_db_root_user }}" -# login_password: "{{ atl_db_root_password }}" -# db: "{{ atl_jdbc_db_name }}" -# query: "GRANT ALL ON SCHEMA public TO {{ atl_db_root_user }};" - -# - name: Grant privs to application user on public schema -# postgresql_query: -# login_host: "{{ atl_db_host }}" -# login_user: "{{ atl_db_root_user }}" -# login_password: "{{ atl_db_root_password }}" -# db: "{{ atl_jdbc_db_name }}" -# query: "GRANT ALL ON SCHEMA public TO {{ atl_jdbc_user }};" diff --git a/roles/database_init/vars/mysql.yml b/roles/database_init/vars/mysql.yml new file mode 100644 index 0000000..90132f4 --- /dev/null +++ b/roles/database_init/vars/mysql.yml @@ -0,0 +1,10 @@ +--- + +atl_db_port: '5432' +atl_db_root_user: 'root' +atl_jdbc_encoding: 'utf8mb4' +atl_jdbc_collation: 'utf8mb4_bin' +atl_jdbc_ctype: 'utf8mb4_bin' + +mysql_jdbc_connector: 'mysql-connector-java-8.0.21' +mysql_jdbc_connector_url: "https://dev.mysql.com/get/Downloads/Connector-J/{{ mysql_jdbc_connector }}.tar.gz" \ No newline at end of file diff --git a/roles/database_init/defaults/main.yml b/roles/database_init/vars/postgres.yml similarity index 100% rename from roles/database_init/defaults/main.yml rename to roles/database_init/vars/postgres.yml diff --git a/roles/jira_config/templates/dbconfig.xml.j2 b/roles/jira_config/templates/dbconfig.xml.j2 index 992a3f6..dd480f5 100644 --- a/roles/jira_config/templates/dbconfig.xml.j2 +++ b/roles/jira_config/templates/dbconfig.xml.j2 @@ -4,7 +4,9 @@ defaultDS default {{ atl_db_type }} + {% if atl_db_general_type == 'postgres' %}} public + {% endif %}} {{ atl_jdbc_url }} {{ atl_jdbc_user }}