diff --git a/postgres/init.sls b/postgres/init.sls index 6ba5eb4..a2eeea4 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -1,26 +1,45 @@ {% 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 'postgresconf' in pillar.get('postgres', {}) %} @@ -39,7 +58,7 @@ postgresql-conf: {% 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 @@ -51,7 +70,6 @@ pg_hba.conf: - service: postgresql {% endif %} - {% if 'users' in pillar.get('postgres', {}) %} {% for name, user in salt['pillar.get']('postgres:users').items() %} postgres-user-{{ name }}: @@ -84,4 +102,3 @@ postgres-db-{{ name }}: {% endif %} {% endfor%} {% endif %} - diff --git a/postgres/map.jinja b/postgres/map.jinja index fbf5473..ef82476 100644 --- a/postgres/map.jinja +++ b/postgres/map.jinja @@ -1,27 +1,42 @@ {% 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', }, }, merge=salt['grains.filter_by']({ - '14.04': { - 'pkg': 'postgresql', - 'pkg_dev': 'postgresql-server-dev-9.3', - 'conf_dir': '/etc/postgresql/9.3/main', - }, + '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'))) %}