Merge pull request #93 from tgoodaire/master
Allow initdb to be run as other users, cleanup of dependencies
This commit is contained in:
@@ -33,13 +33,6 @@ def _run_psql(cmd, runas=None, password=None, host=None, port=None, user=None):
|
|||||||
if runas is None:
|
if runas is None:
|
||||||
if not host:
|
if not host:
|
||||||
host = __salt__['config.option']('postgres.host')
|
host = __salt__['config.option']('postgres.host')
|
||||||
if not host or host.startswith('/'):
|
|
||||||
if 'FreeBSD' in __grains__['os_family']:
|
|
||||||
runas = 'pgsql'
|
|
||||||
if 'OpenBSD' in __grains__['os_family']:
|
|
||||||
runas = '_postgresql'
|
|
||||||
else:
|
|
||||||
runas = 'postgres'
|
|
||||||
|
|
||||||
if user is None:
|
if user is None:
|
||||||
user = runas
|
user = runas
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ postgres:
|
|||||||
python: python-psycopg2
|
python: python-psycopg2
|
||||||
service: postgresql
|
service: postgresql
|
||||||
conf_dir: /var/lib/pgsql/data
|
conf_dir: /var/lib/pgsql/data
|
||||||
|
data_dir: /var/lib/pgsql/data
|
||||||
create_cluster: False
|
create_cluster: False
|
||||||
init_db: False
|
init_db: False
|
||||||
version: 9.1
|
version: 9.1
|
||||||
@@ -20,5 +21,7 @@ postgres:
|
|||||||
pg_hba.conf: salt://postgres/pg_hba.conf
|
pg_hba.conf: salt://postgres/pg_hba.conf
|
||||||
commands:
|
commands:
|
||||||
initdb: service postgresql initdb
|
initdb: service postgresql initdb
|
||||||
postgres_user: postgres
|
initdb_user: root
|
||||||
postgres_group: postgres
|
initdb_args: --data-checksum
|
||||||
|
user: postgres
|
||||||
|
group: postgres
|
||||||
|
|||||||
@@ -5,49 +5,54 @@ include:
|
|||||||
- postgres.upstream
|
- postgres.upstream
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ postgres.conf_dir }}:
|
postgresql-config-dir:
|
||||||
file.directory:
|
file.directory:
|
||||||
- user: {{ postgres.postgres_user }}
|
- name: {{ postgres.conf_dir }}
|
||||||
- group: {{ postgres.postgres_group }}
|
- user: {{ postgres.user }}
|
||||||
|
- group: {{ postgres.group }}
|
||||||
- makedirs: True
|
- makedirs: True
|
||||||
|
{% if postgres.conf_dir == postgres.data_dir %}
|
||||||
|
- require:
|
||||||
|
- cmd: postgresql-cluster-prepared
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
install-postgresql:
|
postgresql-installed:
|
||||||
pkg.installed:
|
pkg.installed:
|
||||||
- name: {{ postgres.pkg }}
|
- name: {{ postgres.pkg }}
|
||||||
- refresh: {{ postgres.use_upstream_repo }}
|
- refresh: {{ postgres.use_upstream_repo }}
|
||||||
|
|
||||||
|
# make sure the data directory and contents have been initialized
|
||||||
|
postgresql-cluster-prepared:
|
||||||
|
cmd.run:
|
||||||
|
- cwd: /
|
||||||
{% if postgres.create_cluster != False %}
|
{% if postgres.create_cluster != False %}
|
||||||
create-postgresql-cluster:
|
|
||||||
cmd.run:
|
|
||||||
- cwd: /
|
|
||||||
- user: root
|
- user: root
|
||||||
- name: pg_createcluster {{ postgres.version }} main --start
|
- name: pg_createcluster {{ postgres.version }} main
|
||||||
- unless: test -f {{ postgres.conf_dir }}/postgresql.conf
|
- unless:
|
||||||
- env:
|
- test -f {{ postgres.conf_dir }}/environment
|
||||||
LC_ALL: C.UTF-8
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if postgres.init_db != False %}
|
{% if postgres.init_db != False %}
|
||||||
postgresql-initdb:
|
- user: {{ postgres.initdb_user }}
|
||||||
cmd.run:
|
- name: {{ postgres.commands.initdb }} {{ postgres.initdb_args }} -D {{ postgres.data_dir }}
|
||||||
- cwd: /
|
- unless:
|
||||||
- user: root
|
- test -f {{ postgres.data_dir }}/PG_VERSION
|
||||||
- name: {{ postgres.commands.initdb }}
|
{% endif %}
|
||||||
- unless: test -f {{ postgres.conf_dir }}/postgresql.conf
|
- require:
|
||||||
|
- pkg: postgresql-installed
|
||||||
- env:
|
- env:
|
||||||
LC_ALL: C.UTF-8
|
LC_ALL: C.UTF-8
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
run-postgresql:
|
postgresql-running:
|
||||||
service.running:
|
service.running:
|
||||||
- enable: True
|
- enable: True
|
||||||
- reload: True
|
- reload: True
|
||||||
- name: {{ postgres.service }}
|
- name: {{ postgres.service }}
|
||||||
|
- reload: true
|
||||||
- require:
|
- require:
|
||||||
- pkg: install-postgresql
|
- cmd: postgresql-cluster-prepared
|
||||||
|
|
||||||
{% if postgres.pkgs_extra %}
|
{% if postgres.pkgs_extra %}
|
||||||
install-postgres-extra:
|
postgresql-extra-pkgs-installed:
|
||||||
pkg.installed:
|
pkg.installed:
|
||||||
- pkgs: {{ postgres.pkgs_extra }}
|
- pkgs: {{ postgres.pkgs_extra }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -66,26 +71,31 @@ postgresql-conf:
|
|||||||
- backup: False
|
- backup: False
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
- watch_in:
|
- watch_in:
|
||||||
- service: run-postgresql
|
- service: postgresql-running
|
||||||
|
- require:
|
||||||
|
- file: postgresql-config-dir
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
pg_hba.conf:
|
postgresql-pg_hba:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: {{ postgres.conf_dir }}/pg_hba.conf
|
- name: {{ postgres.conf_dir }}/pg_hba.conf
|
||||||
- source: {{ postgres['pg_hba.conf'] }}
|
- source: {{ postgres['pg_hba.conf'] }}
|
||||||
- template: jinja
|
- template: jinja
|
||||||
- user: {{ postgres.postgres_user }}
|
- user: {{ postgres.user }}
|
||||||
- group: {{ postgres.postgres_group }}
|
- group: {{ postgres.group }}
|
||||||
- mode: 644
|
- mode: 644
|
||||||
- require:
|
- require:
|
||||||
- pkg: install-postgresql
|
- file: postgresql-config-dir
|
||||||
- onlyif: test -f {{ postgres.conf_dir }}/postgresql.conf
|
|
||||||
- watch_in:
|
- watch_in:
|
||||||
- service: run-postgresql
|
- service: postgresql-running
|
||||||
|
|
||||||
{% for name, user in postgres.users.items() %}
|
{% for name, user in postgres.users.items() %}
|
||||||
postgres-user-{{ name }}:
|
postgresql-user-{{ name }}:
|
||||||
{% if user.get('ensure', 'present') == 'present' %}
|
{% if user.get('ensure', 'present') == 'absent' %}
|
||||||
|
postgres_user.absent:
|
||||||
|
- name: {{ name }}
|
||||||
|
- user: {{ user.get('runas', postgres.user) }}
|
||||||
|
{% else %}
|
||||||
postgres_user.present:
|
postgres_user.present:
|
||||||
- name: {{ name }}
|
- name: {{ name }}
|
||||||
- createdb: {{ user.get('createdb', False) }}
|
- createdb: {{ user.get('createdb', False) }}
|
||||||
@@ -94,21 +104,21 @@ postgres-user-{{ name }}:
|
|||||||
- inherit: {{ user.get('inherit', True) }}
|
- inherit: {{ user.get('inherit', True) }}
|
||||||
- replication: {{ user.get('replication', False) }}
|
- replication: {{ user.get('replication', False) }}
|
||||||
- password: {{ user.get('password', 'changethis') }}
|
- password: {{ user.get('password', 'changethis') }}
|
||||||
- user: {{ user.get('runas', postgres.postgres_user) }}
|
- user: {{ user.get('runas', postgres.user) }}
|
||||||
- superuser: {{ user.get('superuser', False) }}
|
- superuser: {{ user.get('superuser', False) }}
|
||||||
- require:
|
|
||||||
- service: run-postgresql
|
|
||||||
{% else %}
|
|
||||||
postgres_user.absent:
|
|
||||||
- name: {{ name }}
|
|
||||||
- user: {{ user.get('runas', postgres.postgres_user) }}
|
|
||||||
- require:
|
|
||||||
- service: run-postgresql
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
- require:
|
||||||
|
- service: postgresql-running
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% for name, db in postgres.databases.items() %}
|
{% for name, db in postgres.databases.items() %}
|
||||||
postgres-db-{{ name }}:
|
postgresql-db-{{ name }}:
|
||||||
|
{% if db.get('ensure', 'present') == 'absent' %}
|
||||||
|
postgres_database.absent:
|
||||||
|
- name: {{ name }}
|
||||||
|
- require:
|
||||||
|
- service: postgresql-running
|
||||||
|
{% else %}
|
||||||
postgres_database.present:
|
postgres_database.present:
|
||||||
- name: {{ name }}
|
- name: {{ name }}
|
||||||
- encoding: {{ db.get('encoding', 'UTF8') }}
|
- encoding: {{ db.get('encoding', 'UTF8') }}
|
||||||
@@ -118,16 +128,16 @@ postgres-db-{{ name }}:
|
|||||||
{% if db.get('owner') %}
|
{% if db.get('owner') %}
|
||||||
- owner: {{ db.get('owner') }}
|
- owner: {{ db.get('owner') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
- user: {{ db.get('runas', postgres.postgres_user) }}
|
- user: {{ db.get('runas', postgres.user) }}
|
||||||
- require:
|
- require:
|
||||||
- service: run-postgresql
|
- service: postgresql-running
|
||||||
{% if db.get('user') %}
|
{% if db.get('user') %}
|
||||||
- postgres_user: postgres-user-{{ db.get('user') }}
|
- postgres_user: postgresql-user-{{ db.get('user') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if db.schemas is defined %}
|
{% if db.schemas is defined %}
|
||||||
{% for schema, schema_args in db.schemas.items() %}
|
{% for schema, schema_args in db.schemas.items() %}
|
||||||
postgres-schema-{{ schema }}-for-db-{{ name }}:
|
postgresql-schema-{{ schema }}-for-db-{{ name }}:
|
||||||
postgres_schema.present:
|
postgres_schema.present:
|
||||||
- name: {{ schema }}
|
- name: {{ schema }}
|
||||||
- dbname: {{ name }}
|
- dbname: {{ name }}
|
||||||
@@ -135,28 +145,34 @@ postgres-schema-{{ schema }}-for-db-{{ name }}:
|
|||||||
{% for arg, value in schema_args.items() %}
|
{% for arg, value in schema_args.items() %}
|
||||||
- {{ arg }}: {{ value }}
|
- {{ arg }}: {{ value }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
- require:
|
||||||
|
- service: postgresql-running
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if db.extensions is defined %}
|
{% if db.extensions is defined %}
|
||||||
{% for ext, ext_args in db.extensions.items() %}
|
{% for ext, ext_args in db.extensions.items() %}
|
||||||
postgres-ext-{{ ext }}-for-db-{{ name }}:
|
postgresql-ext-{{ ext }}-for-db-{{ name }}:
|
||||||
postgres_extension.present:
|
postgres_extension.present:
|
||||||
- name: {{ ext }}
|
- name: {{ ext }}
|
||||||
- user: {{ db.get('runas', postgres.postgres_user) }}
|
- user: {{ db.get('runas', postgres.user) }}
|
||||||
- maintenance_db: {{ name }}
|
- maintenance_db: {{ name }}
|
||||||
{% if ext_args is not none %}
|
{% if ext_args is not none %}
|
||||||
{% for arg, value in ext_args.items() %}
|
{% for arg, value in ext_args.items() %}
|
||||||
- {{ arg }}: {{ value }}
|
- {{ arg }}: {{ value }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
- require:
|
||||||
|
- service: postgresql-running
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
{% for name, directory in postgres.tablespaces.items() %}
|
{% for name, directory in postgres.tablespaces.items() %}
|
||||||
postgres-tablespace-dir-perms-{{ directory}}:
|
postgresql-tablespace-dir-perms-{{ directory}}:
|
||||||
file.directory:
|
file.directory:
|
||||||
- name: {{ directory }}
|
- name: {{ directory }}
|
||||||
- user: postgres
|
- user: postgres
|
||||||
@@ -166,10 +182,12 @@ postgres-tablespace-dir-perms-{{ directory}}:
|
|||||||
- user
|
- user
|
||||||
- group
|
- group
|
||||||
|
|
||||||
postgres-tablespace-{{ name }}:
|
postgresql-tablespace-{{ name }}:
|
||||||
postgres_tablespace.present:
|
postgres_tablespace.present:
|
||||||
- name: {{ name }}
|
- name: {{ name }}
|
||||||
- directory: {{ directory }}
|
- directory: {{ directory }}
|
||||||
- require:
|
- require:
|
||||||
- service: run-postgresql
|
- service: postgresql-running
|
||||||
|
- file: postgresql-tablespace-dir-perms-{{ directory}}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% import_yaml "postgres/codenamemap.yaml" as codemap %}
|
{% import_yaml "postgres/codenamemap.yaml" as codemap %}
|
||||||
|
|
||||||
{# get the settings for the os_family grain #}
|
{# get the settings for the os_family grain #}
|
||||||
{% set osfam = salt['grains.filter_by'](osmap) or {} %}
|
{% set osfam = salt['grains.filter_by'](osmap, grain='os_family') or {} %}
|
||||||
{# get the settings for the oscodename grain, os_family data will override
|
{# get the settings for the oscodename grain, os_family data will override
|
||||||
oscodename data #}
|
oscodename data #}
|
||||||
{% set oscode = salt['grains.filter_by'](codemap,
|
{% set oscode = salt['grains.filter_by'](codemap,
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
RedHat:
|
RedHat:
|
||||||
init_db: True
|
init_db: True
|
||||||
commands:
|
commands:
|
||||||
initdb: sudo -u postgres initdb /var/lib/pgsql/data
|
initdb: initdb
|
||||||
|
initdb_user: postgres
|
||||||
pkg: postgresql-server
|
pkg: postgresql-server
|
||||||
pkg_client: postgresql
|
pkg_client: postgresql
|
||||||
pkg_repo: pgdg94
|
pkg_repo: pgdg94
|
||||||
@@ -11,7 +12,13 @@ Debian:
|
|||||||
pkg_repo_file: /etc/apt/sources.list.d/pgdg.list
|
pkg_repo_file: /etc/apt/sources.list.d/pgdg.list
|
||||||
pkg_libpq_dev: libpq-dev
|
pkg_libpq_dev: libpq-dev
|
||||||
Suse:
|
Suse:
|
||||||
|
init_db: True
|
||||||
commands:
|
commands:
|
||||||
initdb: sudo -u postgres initdb /var/lib/pgsql/data
|
initdb: initdb
|
||||||
|
initdb_user: postgres
|
||||||
pkg: postgresql-server
|
pkg: postgresql-server
|
||||||
pkg_client: postgresql
|
pkg_client: postgresql
|
||||||
|
FreeBSD:
|
||||||
|
user: pgsql
|
||||||
|
OpenBSD:
|
||||||
|
user: _postgresql
|
||||||
|
|||||||
Reference in New Issue
Block a user