diff --git a/roles/database_init/tasks/main.yml b/roles/database_init/tasks/main.yml index 01f308e..e065a0a 100644 --- a/roles/database_init/tasks/main.yml +++ b/roles/database_init/tasks/main.yml @@ -10,6 +10,15 @@ password: "{{ atl_jdbc_password }}" expires: 'infinity' +- name: Collect dbcluster db_names + postgresql_query: + login_host: "{{ atl_db_host }}" + login_user: "{{ atl_db_root_user }}" + login_password: "{{ atl_db_root_password }}" + db: "{{ atl_db_root_db_name }}" + query: "SELECT datname FROM pg_database;" + register: dbcluster_db_names + - block: - name: Update root privs for new user @@ -22,6 +31,7 @@ objs: "{{ atl_jdbc_user }}" type: group +# RDS does not allow changing the collation on an existing DB, it only allows collation change on creation of db. If the db already exists, we need the “create new application database” task to be skipped, idempotence can not be relied upon as we cant be certain the collation of the existing db - name: Create new application database postgresql_db: login_host: "{{ atl_db_host }}" @@ -35,6 +45,7 @@ lc_ctype: "{{ atl_jdbc_ctype }}" template: "{{ atl_jdbc_template }}" register: db_created + when: "atl_jdbc_db_name not in (dbcluster_db_names.query_result | map(attribute='datname') )" tags: - new_only @@ -62,4 +73,3 @@ login_password: "{{ atl_db_root_password }}" db: "{{ atl_jdbc_db_name }}" query: "GRANT ALL ON SCHEMA public TO {{ atl_jdbc_user }};" -