diff --git a/pillar.example b/pillar.example index 331df2e..3187231 100644 --- a/pillar.example +++ b/pillar.example @@ -6,3 +6,6 @@ postgres: lookup: pkg: postgresql-9.3 + db: + name: mydb + user: mydb \ No newline at end of file diff --git a/postgres/init.sls b/postgres/init.sls index 7d2f9ca..100f79a 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -8,6 +8,39 @@ postgresql: - running - enable: true - name: {{ postgres.service }} + - watch: + - file: {{ postgres.pg_hba }} - require: - pkg: {{ postgres.pkg }} +pg_hba.conf: + file.managed: + - name: {{ postgres.pg_hba }} + - source: salt://postgres/pg_hba.conf + - template: jinja + - user: postgres + - group: postgres + - mode: 644 + - require: + - pkg: {{ postgres.pkg }} + +postgres-app-user: + postgres_user.present: + - name: {{ pillar['postgres']['db']['user'] }} + - createdb: {{ pillar['postgres']['db']['createdb'] }} + - password: {{ pillar['postgres']['db']['password'] }} + - runas: postgres + - require: + - service: {{ postgres.service }} + +postgres-app-db: + postgres_database.present: + - name: {{ pillar['postgres']['db']['name'] }} + - encoding: UTF8 + - lc_ctype: en_US.UTF8 + - lc_collate: en_US.UTF8 + - template: template0 + - owner: {{ pillar['postgres']['db']['user'] }} + - runas: postgres + - require: + - postgres_user: postgres-app-user diff --git a/postgres/map.jinja b/postgres/map.jinja index a809e5d..85d932c 100644 --- a/postgres/map.jinja +++ b/postgres/map.jinja @@ -3,6 +3,7 @@ 'pkg': 'postgresql-9.1', 'python': 'python-pygresql', 'service': 'postgresql', + 'pg_hba': '/etc/postgresql/9.1/main/pg_hba.conf', }, 'RedHat': { 'pkg': 'postgresql', diff --git a/postgres/pg_hba.conf b/postgres/pg_hba.conf new file mode 100644 index 0000000..14d22f3 --- /dev/null +++ b/postgres/pg_hba.conf @@ -0,0 +1,20 @@ +# TYPE DATABASE USER ADDRESS METHOD + +local {{ pillar['postgres']['db']['name'] }} {{ pillar['postgres']['db']['user'] }} md5 + +# DO NOT DISABLE! +# If you change this first entry you will need to make sure that the +# database superuser can access the database using some other method. +# Noninteractive access to all databases is required during automatic +# maintenance (custom daily cronjobs, replication, and similar tasks). +# +# Database administrative login by Unix domain socket +local all postgres peer + + +# "local" is for Unix domain socket connections only +local all all trust +# IPv4 local connections: +host all all 127.0.0.1/32 trust +# IPv6 local connections: +host all all ::1/128 trust \ No newline at end of file