From a297c0401dc4d8cdfc84734ece4ecaa515242369 Mon Sep 17 00:00:00 2001 From: Jens Timmerman Date: Fri, 11 Sep 2020 00:23:53 +0200 Subject: [PATCH] only add new databases if they are not yet present fixes #147 --- tasks/databases.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tasks/databases.yml b/tasks/databases.yml index e01d804..f998ddd 100644 --- a/tasks/databases.yml +++ b/tasks/databases.yml @@ -1,4 +1,16 @@ --- +- name: Collect PostgreSQL db_names + postgresql_query: + login_host: "{{ item.login_host | default('localhost') }}" + login_password: "{{ item.login_password | default(omit) }}" + login_user: "{{ item.login_user | default(postgresql_user) }}" + login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_directories[0]) }}" + port: "{{ item.port | default(omit) }}" + query: "SELECT datname FROM pg_database;" + register: postgresql_present_db_names + become: true + become_user: "{{ postgresql_user }}" + - name: Ensure PostgreSQL databases are present. postgresql_db: name: "{{ item.name }}" @@ -19,3 +31,5 @@ # See: https://github.com/ansible/ansible/issues/16048#issuecomment-229012509 vars: ansible_ssh_pipelining: true + when: "item.name not in (postgresql_present_db_names.query_result | map(attribute='datname') )" +