--- - name: Add a user for the postgresql DBs become: True become_user: postgres postgresql_user: user={{ item.user }} password={{ item.pwd }} role_attr_flags={{ item.roles }} port={{ psql_db_port }} with_items: '{{ psql_db_data }}' when: - psql_db_data is defined - item.roles is defined tags: [ 'postgresql', 'postgres', 'pg_db' ] - name: Add the databases with the correct owner become: True become_user: postgres postgresql_db: db={{ item.name }} port={{ psql_db_port }} encoding={{ item.encoding }} owner={{ item.user }} template=template0 state=present with_items: '{{ psql_db_data }}' when: - psql_db_data is defined - ( item.createdb is not defined or item.createdb ) tags: [ 'postgresql', 'postgres', 'pg_db' ] - name: Add postgres extensions to the databases, if needed become: True become_user: postgres postgresql_ext: name={{ item.1 }} db={{ item.0.name }} port={{ psql_db_port }} with_subelements: - '{{ psql_db_data | default ([]) }}' - extensions when: item.1 is defined tags: [ 'postgresql', 'postgres', 'pg_extensions' ]