diff --git a/postgres/init.sls b/postgres/init.sls index 6ba093c..944c30c 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -1,32 +1,52 @@ {% from "postgres/map.jinja" import postgres with context %} -postgresql: - pkg: - - installed +install-postgresql: + pkg.installed: - name: {{ postgres.pkg }} - service: - - running +{% if postgres.create_cluster != False %} +create-postgresql-cluster: + cmd.run: + - cwd: / + - user: root + - name: pg_createcluster {{ postgres.version }} main --start + - unless: test -f {{ postgres.conf_dir }}/postgresql.conf + - env: + LC_ALL: C.UTF-8 +{% endif %} + +{% if postgres.init_db != False %} +postgresql-initdb: + cmd.run: + - cwd: / + - user: root + - name: service postgresql initdb + - unless: test -f {{ postgres.conf_dir }}/postgresql.conf + - env: + LC_ALL: C.UTF-8 +{% endif %} + +run-postgresql: + service.running: - enable: true - name: {{ postgres.service }} - require: - pkg: {{ postgres.pkg }} - -postgresql-server-dev-9.3: - pkg.installed - -libpq-dev: - pkg.installed +{% if postgres.pkg_dev != False %} +install-postgres-dev-package: + pkg.installed: + - name: {{ postgres.pkg_dev }} +{% endif %} -python-dev: +{{ postgres.pkg_libpq_dev }}: pkg.installed {% if 'pg_hba.conf' in pillar.get('postgres', {}) %} pg_hba.conf: file.managed: - - name: {{ postgres.pg_hba }} + - name: {{ postgres.conf_dir }}/pg_hba.conf - source: {{ salt['pillar.get']('postgres:pg_hba.conf', 'salt://postgres/pg_hba.conf') }} - template: jinja - user: postgres diff --git a/postgres/map.jinja b/postgres/map.jinja index 85d932c..ec58d6a 100644 --- a/postgres/map.jinja +++ b/postgres/map.jinja @@ -1,18 +1,44 @@ {% set postgres = salt['grains.filter_by']({ 'Debian': { 'pkg': 'postgresql-9.1', + 'pkg_dev': 'postgresql-server-dev-9.1', + 'pkg_libpq_dev': 'libpq-dev', 'python': 'python-pygresql', 'service': 'postgresql', - 'pg_hba': '/etc/postgresql/9.1/main/pg_hba.conf', + 'conf_dir': '/etc/postgresql/9.1/main', + 'create_cluster': False, + 'init_db': False, + 'version': '9.1', }, 'RedHat': { - 'pkg': 'postgresql', - 'python': 'postgresql-python', + 'pkg': 'postgresql-server', + 'pkg_dev': 'postgresql-devel', + 'pkg_libpq_dev': 'postgresql-libs', + 'python': 'python-psycopg2', 'service': 'postgresql', + 'conf_dir': '/var/lib/pgsql/data', + 'create_cluster': False, + 'init_db': True, + 'version': '9.1', }, 'Arch': { 'pkg': 'postgresql', + 'pkg_dev': 'postgresql-devel', + 'pkg_libpq_dev': 'postgresql-libs', 'python': 'python-psycopg2', 'service': 'postgresql', + 'conf_dir': '/var/lib/pgsql/data/', + 'create_cluster': False, + 'init_db': False, + 'version': '9.1', }, -}, merge=salt['pillar.get']('postgres:lookup')) %} +}, merge=salt['grains.filter_by']({ + '14.04': { + 'pkg': 'postgresql', + 'pkg_dev': 'postgresql-server-dev-9.3', + 'conf_dir': '/etc/postgresql/9.3/main', + 'service': 'postgresql', + 'create_cluster': True, + 'version': '9.3', + }, +}, grain='lsb_distrib_release', merge=salt['pillar.get']('postgres:lookup'))) %}