--- - set_fact: postgresql_installed="true" - name: Adding APT repository key become: yes apt_key: id: ACCC4CF8 url: https://www.postgresql.org/media/keys/ACCC4CF8.asc tags: - postgresql - db - repo - name: Add PostgreSQL official APT repository become: yes apt_repository: repo: "deb http://apt.postgresql.org/pub/repos/apt/ {{ansible_distribution_release}}-pgdg main" tags: - postgresql - db - repo - name: Install PostgreSQL become: yes apt: name: "{{item}}" state: present update_cache: yes cache_valid_time: 3600 with_items: - "postgresql-{{postgresql_version}}" - "postgresql-client-{{postgresql_version}}" - "libpq-dev" tags: - postgresql - db - deps - name: "Detect python3" shell: "which python3" register: is_python3 - name: Ensure pip is installed (python3) when: is_python3 is succeeded apt: name: python3-pip state: present update_cache: yes - name: Install psycopg2 (python3) when: is_python3 is succeeded become: yes pip: name: psycopg2 break_system_packages: true - name: Install psycopg2 (python2) when: is_python3 is failed become: yes apt: name: python-psycopg2 state: latest - name: Create postgresql user postgresql_user: name: "{{database_user}}" password: "{{database_password}}" state: present become: true become_user: postgres - name: Create postgresql database postgresql_db: name: "{{database_name}}" owner: "{{database_user}}" template: template1 state: present become: true become_user: postgres - name: Grant all privileges on database to user postgresql_privs: database: "{{database_name}}" privs: ALL roles: "{{database_user}}" state: present type: database become: true become_user: postgres - name: "Enable postgres hstore" become: true become_user: postgres postgresql_ext: db: "{{database_name}}" name: hstore state: present - import_tasks: backups.yml become: true - name: Grab Psql version shell: psql --version register: stats_psql_version when: send_stats == true and stats_url is defined and stats_api_key is defined tags: - maintenance - stats - name: Send Psql stats to URL uri: url: "{{stats_url}}" method: POST headers: X-API-Version: 1 X-Client-Api-key: "{{stats_api_key}}" body_format: json body: client_stat: key: psql_version value: "{{stats_psql_version.stdout}}" hostname: "{{hostname}}" when: send_stats == true and stats_url is defined and stats_api_key is defined tags: - maintenance - stats