--- - name: Install the packages needed by postgres when running behind a pgpool server apt: pkg={{ item }} state={{ psql_pkg_state }} with_items: '{{ postgresql_pgpool_pkgs }}' when: psql_pgpool_install notify: Restart postgresql tags: [ 'postgresql', 'postgres', 'pgpool' ] - name: Add the user that will manage the recovery, if not postgres become: True become_user: postgres postgresql_user: user={{ pgpool_recovery_user }} password={{ pgpool_recovery_user_pwd }} role_attr_flags=REPLICATION port={{ psql_db_port }} when: - ('{{ pgpool_recovery_user }}' != 'postgres') - pgpool_recovery_user_pwd is defined tags: [ 'postgresql', 'postgres', 'pgpool' ] - name: Give access to the pgpool recovery user, if it is not postgres lineinfile: name=/etc/postgresql/{{ psql_version }}/main/pg_hba.conf regexp="^host {{ item.0.name }} {{ pgpool_recovery_user }} {{ item.1 }}.*$" line="host {{ item.0.name }} {{ pgpool_recovery_user }} {{ item.1 }} md5" with_subelements: - '{{ psql_db_data | default([]) }}' - allowed_hosts when: - psql_db_data is defined - item.1 is defined - pgpool_recovery_user_pwd is defined notify: Reload postgresql tags: [ 'postgresql', 'postgres', 'pgpool' ] - name: Install the pgpool recovery and remote restart scripts. They assume that the postgresql hosts can talk to each other template: src={{ item.1 }}.j2 dest={{ item.0.backend_data_directory }}/{{ item.1 }} owner=postgres group=postgres mode=0500 with_nested: - '{{ pgpool_backends | default([]) }}' - [ '{{ pgpool_recovery_stage1_script }}', '{{ pgpool_recovery_stage2_script }}', '{{ pgpool_remote_start_script }}' ] tags: [ 'postgresql', 'postgres', 'pgpool' ]