Merge pull request #46 from iggy/new-style-map-jinja

Switch to new style map.jinja
This commit is contained in:
Forrest 2015-04-22 16:20:10 -07:00
commit 92ee5e3538
8 changed files with 81 additions and 83 deletions

View file

@ -1,7 +1,7 @@
postgres:
pg_hba.conf: salt://postgres/pg_hba.conf
use_upstream_repo: True
use_upstream_repo: False
lookup:
pkg: 'postgresql-9.3'

View file

@ -1,6 +1,6 @@
{% from "postgres/map.jinja" import postgres with context %}
{% if salt['pillar.get']('postgres:use_upstream_repo') %}
{% if postgres.use_upstream_repo %}
include:
- postgres.upstream
{% endif %}
@ -8,7 +8,7 @@ include:
install-postgresql-client:
pkg.installed:
- name: {{ postgres.pkg_client }}
- refresh: {{ salt['pillar.get']('postgres:use_upstream_repo', False) }}
- refresh: {{ postgres.use_upstream_repo }}
{% if postgres.pkg_libpq_dev != False %}
install-postgres-libpq-dev:

View file

@ -0,0 +1,9 @@
wheezy:
pkg_repo: deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
jessie:
version: 9.4
pkg_repo: deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main
trusty:
version: 9.3
utopic:
version: 9.4

18
postgres/defaults.yaml Normal file
View file

@ -0,0 +1,18 @@
postgres:
pkg: postgresql
pkg_dev: postgresql-devel
pkg_libpq_dev: postgresql-libs
pkg_client: postgresql-client
pkg_contrib: postgresql-contrib
python: python-psycopg2
service: postgresql
conf_dir: /var/lib/pgsql/data
create_cluster: False
init_db: False
version: 9.1
use_upstream_repo: False
users: {}
acls: []
databases: {}
postgresconf: ""
pg_hba.conf: salt://postgres/pg_hba.conf

View file

@ -1,6 +1,6 @@
{% from "postgres/map.jinja" import postgres with context %}
{% if salt['pillar.get']('postgres:use_upstream_repo') %}
{% if postgres.use_upstream_repo %}
include:
- postgres.upstream
{% endif %}
@ -8,7 +8,7 @@ include:
install-postgresql:
pkg.installed:
- name: {{ postgres.pkg }}
- refresh: {{ salt['pillar.get']('postgres:use_upstream_repo', False) }}
- refresh: {{ postgres.use_upstream_repo }}
{% if postgres.create_cluster != False %}
create-postgresql-cluster:
@ -57,25 +57,24 @@ install-postgres-contrib:
- name: {{ postgres.pkg_contrib }}
{% endif %}
{% if 'postgresconf' in pillar.get('postgres', {}) %}
{% if postgres.postgresconf %}
postgresql-conf:
file.blockreplace:
- name: {{ postgres.conf_dir }}/postgresql.conf
- marker_start: "# Managed by SaltStack: listen_addresses: please do not edit"
- marker_end: "# Managed by SaltStack: end of salt managed zone --"
- content: |
{{ salt['pillar.get']('postgres:postgresconf') | indent(8) }}
{{ postgres.postgresconf|indent(8) }}
- show_changes: True
- append_if_not_found: True
- watch_in:
- service: postgresql
{% endif %}
{% if 'pg_hba.conf' in pillar.get('postgres', {}) %}
pg_hba.conf:
file.managed:
- name: {{ postgres.conf_dir }}/pg_hba.conf
- source: {{ salt['pillar.get']('postgres:pg_hba.conf', 'salt://postgres/pg_hba.conf') }}
- source: {{ postgres['pg_hba.conf'] }}
- template: jinja
- user: postgres
- group: postgres
@ -84,37 +83,32 @@ pg_hba.conf:
- pkg: {{ postgres.pkg }}
- watch_in:
- service: postgresql
{% endif %}
{% if 'users' in pillar.get('postgres', {}) %}
{% for name, user in salt['pillar.get']('postgres:users').items() %}
{% for name, user in postgres.users.items() %}
postgres-user-{{ name }}:
postgres_user.present:
- name: {{ name }}
- createdb: {{ salt['pillar.get']('postgres:users:' + name + ':createdb', False) }}
- password: {{ salt['pillar.get']('postgres:users:' + name + ':password', 'changethis') }}
- runas: postgres
- createdb: {{ user.get('createdb', False) }}
- password: {{ user.get('password', 'changethis') }}
- user: {{ user.get('runas', 'postgres') }}
- require:
- service: {{ postgres.service }}
{% endfor%}
{% endif %}
{% if 'databases' in pillar.get('postgres', {}) %}
{% for name, db in salt['pillar.get']('postgres:databases').items() %}
{% for name, db in postgres.databases.items() %}
postgres-db-{{ name }}:
postgres_database.present:
- name: {{ name }}
- encoding: {{ salt['pillar.get']('postgres:databases:'+ name +':encoding', 'UTF8') }}
- lc_ctype: {{ salt['pillar.get']('postgres:databases:'+ name +':lc_ctype', 'en_US.UTF8') }}
- lc_collate: {{ salt['pillar.get']('postgres:databases:'+ name +':lc_collate', 'en_US.UTF8') }}
- template: {{ salt['pillar.get']('postgres:databases:'+ name +':template', 'template0') }}
{% if salt['pillar.get']('postgres:databases:'+ name +':owner') %}
- owner: {{ salt['pillar.get']('postgres:databases:'+ name +':owner') }}
- encoding: {{ db.get('encoding', 'UTF8') }}
- lc_ctype: {{ db.get('lc_ctype', 'en_US.UTF8') }}
- lc_collate: {{ db.get('lc_collate', 'en_US.UTF8') }}
- template: {{ db.get('template', 'template0') }}
{% if db.get('owner') %}
- owner: {{ db.get('owner') }}
{% endif %}
- runas: {{ salt['pillar.get']('postgres:databases:'+ name +':runas', 'postgres') }}
{% if salt['pillar.get']('postgres:databases:'+ name +':user') %}
- user: {{ db.get('runas', 'postgres') }}
{% if db.get('user') %}
- require:
- postgres_user: postgres-user-{{ salt['pillar.get']('postgres:databases:'+ name +':user') }}
- postgres_user: postgres-user-{{ db.get('user') }}
{% endif %}
{% endfor%}
{% endif %}

View file

@ -1,54 +1,22 @@
{% set pg_version = salt['grains.filter_by']({
'RedHat' : { 'id': '9.1' },
'Arch' : { 'id': '9.1' },
'Debian' : { 'id': '9.3' },
}, merge=salt['grains.filter_by']({
'14.04' : { 'id': '9.3' },
'14.10' : { 'id': '9.4' },
}, grain='lsb_distrib_release', merge=salt['grains.filter_by']({
'jessie' : { 'id': '9.4' },
'wheezy' : { 'id': '9.1' },
}, grain='lsb_distrib_codename', merge=salt['pillar.get']('postgres:lookup')))) %}
{% import_yaml "postgres/defaults.yaml" as defaults %}
{% import_yaml "postgres/osmap.yaml" as osmap %}
{% import_yaml "postgres/codenamemap.yaml" as codemap %}
{% set postgres = salt['grains.filter_by']({
'RedHat': {
'pkg' : 'postgresql-server',
'pkg_dev' : 'postgresql-devel',
'pkg_libpq_dev' : 'postgresql-libs',
'pkg_client' : 'postgresql-client',
'python' : 'python-psycopg2',
'service' : 'postgresql',
'conf_dir' : '/var/lib/pgsql/data',
'create_cluster' : False,
'init_db' : True,
'version' : pg_version.id,
},
'Arch': {
'pkg' : 'postgresql',
'pkg_dev' : 'postgresql-devel',
'pkg_libpq_dev' : 'postgresql-libs',
'pkg_client' : 'postgresql-client',
'python' : 'python-psycopg2',
'service' : 'postgresql',
'conf_dir' : '/var/lib/pgsql/data',
'create_cluster' : False,
'init_db' : True,
'version' : pg_version.id,
},
'Debian': {
'pkg' : 'postgresql-' + pg_version.id,
'pkg_dev' : 'postgresql-server-dev-' + pg_version.id,
'pkg_libpq_dev' : 'libpq-dev',
'pkg_client' : 'postgresql-client-'+ pg_version.id,
'pkg_contrib' : 'postgresql-contrib-' + pg_version.id,
'pkg_repo' : 'deb http://apt.postgresql.org/pub/repos/apt/ ' + grains['lsb_distrib_codename'] + '-pgdg main',
'pkg_repo_file' : '/etc/apt/sources.list.d/pgdg.list',
'python' : 'python-pygresql',
'service' : 'postgresql',
'pg_hba' : '/etc/postgresql/' + pg_version.id + '/main/pg_hba.conf',
'conf_dir' : '/etc/postgresql/' + pg_version.id + '/main',
'create_cluster' : False,
'init_db' : False,
'version' : pg_version.id,
},
}, merge=salt['pillar.get']('postgres:lookup')) %}
{# get the settings for the os_family grain #}
{% set osfam = salt['grains.filter_by'](osmap) or {} %}
{# get the settings for the oscodename grain, os_family data will override
oscodename data #}
{% set oscode = salt['grains.filter_by'](codemap,
grain='oscodename',
merge=osfam) or {} %}
{# merge the os family/codename specific data over the defaults #}
{% do defaults.postgres.update(oscode) %}
{# merge the pillar:lookup dict into the defaults/os specific dict #}
{% set lookup = salt['pillar.get']('postgres:lookup',
default=defaults.postgres,
merge=True) %}
{# merge the actual postgres pillar into the above combined dict #}
{% set postgres = salt['pillar.get']('postgres', default=lookup, merge=True) %}

6
postgres/osmap.yaml Normal file
View file

@ -0,0 +1,6 @@
RedHat:
pkg_repo: pgdg94
repo_baseurl: http://yum.postgresql.org/9.4/redhat/rhel-$releasever-$basearch
Arch: {}
Debian:
pkg_repo_file: /etc/apt/sources.list.d/pgdg.list

View file

@ -1,11 +1,14 @@
{% from "postgres/map.jinja" import postgres with context %}
{% if grains['os'] == 'Ubuntu' %} # Other distro support should be added here
{% if grains['os_family'] == 'Debian' %}
install-postgresql-repo:
pkgrepo.managed:
- humanname: PostgreSQL Official Repository
- name: {{ postgres.pkg_repo }}
- name: {{ postgres.pkg_repo }} {{ postgres.version }}
- keyid: B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
- keyserver: keyserver.ubuntu.com
- file: {{ postgres.pkg_repo_file }}
- require_in:
- pkg: {{ postgres.pkg }}
{% endif %}