templates/ansible/roles/postgresql/tasks/main.yml.erb
---
- name: Install packages
apt: name={{ item }}
with_items:
- libpq-dev
- postgresql
- postgresql-contrib
- python-pip
- python-dev
- name: Configure PostgreSQL - postgresql.conf
template: src=postgresql.conf.j2 dest=/etc/postgresql/{{ postgresql_version }}/main/postgresql.conf
notify: restart postgresql
- name: Configure PostgreSQL - pg_hba.conf
template: src=pg_hba.conf.j2 dest=/etc/postgresql/{{ postgresql_version }}/main/pg_hba.conf
notify: restart postgresql
<% if params[:docker] -%>
- name: Create /etc/my_init.d/postgresql.sh
template: src=my_init.sh.j2 dest=/etc/my_init.d/postgresql.sh mode=0755
- name: Start postgresql
command: /etc/my_init.d/postgresql.sh
<% end %>
- name: Install required Python modules
pip: name=psycopg2
- name: Create postgresql user
postgresql_user: name={{ postgresql_db_user }} password={{ postgresql_db_password }} role_attr_flags=CREATEDB,SUPERUSER,CREATEROLE
sudo_user: postgres
- name: Create postgresql database
postgresql_db: name={{ postgresql_db_name }} owner={{ postgresql_db_user }}
sudo_user: postgres
- name: Create postgresql test database
postgresql_db: name={{ postgresql_db_name }}_test owner={{ postgresql_db_user }}
sudo_user: postgres
- name: Assure that config dir exists
file: path={{ shared_config_path }} state=directory
- name: Create config/database.yml
template: src=database.yml.j2 dest={{ shared_config_path }}/database.yml owner={{ user_name }} mode=0600 backup=yes
when: postgresql_orm in ['activerecord', 'sequel', 'datamapper']
- name: Make sure the postgis extensions are installed
apt: name={{ item }}
with_items:
- libgeos-c1
- 'postgresql-{{ postgresql_version }}-postgis-{{ postgresql_ext_postgis_version }}'
notify: restart postgresql
when: "postgresql_extensions and 'postgis' in postgresql_extensions"
- name: Create extensions
sudo_user: '{{ postgresql_admin_user }}'
shell: "psql {{ postgresql_db_name }} -c 'CREATE EXTENSION IF NOT EXISTS {{ item }};'"
with_items: postgresql_extensions
when: postgresql_extensions