Skip to content

Instantly share code, notes, and snippets.

@romanlv
Forked from aht/gist:5097702
Last active February 7, 2019 10:47
Show Gist options
  • Save romanlv/91195b41087ba2d94eee to your computer and use it in GitHub Desktop.
Save romanlv/91195b41087ba2d94eee to your computer and use it in GitHub Desktop.
ansible postgres playbook with PostGIS 2.1 on Ubuntu 14.04, setting up postgis_template and creating databases from this postgis_template
---
# packages.yml
- name: Add postgres repository
apt_repository: repo='deb http://apt.postgresql.org/pub/repos/apt/ {{ansible_distribution_release}}-pgdg main' state=present
- name: Add postgres repository key
apt_key: url=http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc state=present
- name: Install postgresql
apt: pkg=postgresql-9.3 state=present force=yes
- name: Start postgresql server
service: name=postgresql state=started enabled=yes
- name: Install Packages
apt: >
pkg={{item}}
state=installed
update-cache=yes
with_items:
- build-essential
- python-dev
- python-setuptools
- python-psycopg2
- postgresql-contrib-9.3
- postgresql-9.3-postgis-2.1
- libpq-dev
# based on http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt
- name: ensure template_postgis database exists
sudo_user: postgres
postgresql_db: name=template_postgis state=present
register: createdb_template_postgis
- name: make template_postgis a template
sudo_user: postgres
command: psql -d template_postgis -c "UPDATE pg_database SET datistemplate=true WHERE datname='template_postgis';"
when: createdb_template_postgis.changed
- name: enable postgis extension
sudo_user: postgres
command: psql -d template_postgis -c "CREATE EXTENSION postgis;"
when: createdb_template_postgis.changed
# database.yml
- name: Create Database User
sudo: true
sudo_user: postgres
postgresql_user: >
user={{database.user}}
password={{database.password}}
role_attr_flags=CREATEDB,NOSUPERUSER
tags: database
- name: Create Geo Database.
sudo_user: postgres
postgresql_db: >
name={{database.geo_name}}
owner={{database.user}}
login_host=localhost
login_user={{database.user}}
login_password={{database.password}}
template=template_postgis
tags:
- database
- create
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment