2012-10-24 19:20:20 +02:00
|
|
|
Transferred from Inkling
|
|
|
|
========================
|
|
|
|
|
|
|
|
This Puppet module was originally authored by Inkling Systems. The maintainer preferred
|
|
|
|
that Puppet Labs take ownership of the module for future improvement and maintenance as
|
2013-01-16 01:09:10 +01:00
|
|
|
Puppet Labs is using it in the PuppetDB module. Existing pull requests and issues were
|
2012-10-24 19:20:20 +02:00
|
|
|
transferred over, please fork and continue to contribute here instead of Inkling.
|
|
|
|
Previously: https://github.com/inkling/puppet-postgresql
|
|
|
|
|
2012-04-20 00:37:18 +02:00
|
|
|
Puppet module for PostgreSQL resources
|
|
|
|
======================================
|
|
|
|
|
2013-01-16 01:09:10 +01:00
|
|
|
This module provides the following classes and types for managing postgres:
|
2012-04-20 00:37:18 +02:00
|
|
|
|
2013-01-16 01:09:10 +01:00
|
|
|
* `postgresql::server`
|
|
|
|
* `postgresql::client`
|
2012-04-20 00:37:18 +02:00
|
|
|
* `postgresql::db`
|
2013-01-16 01:09:10 +01:00
|
|
|
* `postgresql::database`
|
2012-04-20 00:37:18 +02:00
|
|
|
* `postgresql::role`
|
2012-10-28 02:04:52 +02:00
|
|
|
* `postgresql::database_user` (just for clarity; users are roles in postgres)
|
|
|
|
* `postgresql::database_grant`
|
2013-01-16 01:09:10 +01:00
|
|
|
* `postgresql::initdb`
|
2012-04-20 00:37:18 +02:00
|
|
|
|
|
|
|
And the fallback, analogous to exec resources, only for SQL statements:
|
|
|
|
|
2012-11-05 06:47:49 +01:00
|
|
|
* `postgresql_psql`
|
2012-04-20 00:37:18 +02:00
|
|
|
|
|
|
|
Basic usage
|
|
|
|
-----------
|
|
|
|
|
2012-10-16 23:24:17 +02:00
|
|
|
Manage a PostgreSQL server with sane defaults (login via `sudo -u postgres psql`):
|
|
|
|
|
|
|
|
```Puppet
|
|
|
|
include postgresql::server
|
|
|
|
```
|
|
|
|
|
|
|
|
...or a custom configuration:
|
|
|
|
|
|
|
|
```Puppet
|
|
|
|
class { 'postgresql::server':
|
|
|
|
config_hash => {
|
|
|
|
'ip_mask_deny_postgres_user' => '0.0.0.0/32',
|
|
|
|
'ip_mask_allow_all_users' => '0.0.0.0/0',
|
|
|
|
'listen_addresses' => '*',
|
2012-10-22 21:41:05 +02:00
|
|
|
'ipv4acls' => ['hostssl all johndoe 192.168.0.0/24 cert'],
|
2012-10-16 23:24:17 +02:00
|
|
|
'manage_redhat_firewall' => true,
|
|
|
|
'postgres_password' => 'TPSrep0rt!',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2013-01-16 01:09:10 +01:00
|
|
|
Simple management of a database and user:
|
|
|
|
|
|
|
|
```Puppet
|
|
|
|
postgresl::db { 'mydatabasename':
|
|
|
|
user => 'mydatabaseuser',
|
|
|
|
password => 'mypassword'
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2012-10-16 23:24:17 +02:00
|
|
|
Manage users / roles and permissions:
|
|
|
|
|
|
|
|
```Puppet
|
2012-10-28 02:04:52 +02:00
|
|
|
postgresql::database_user{'marmot':
|
2012-10-16 23:24:17 +02:00
|
|
|
password => 'foo',
|
|
|
|
}
|
|
|
|
|
2012-10-28 02:04:52 +02:00
|
|
|
postgresql::database_grant{'grant select to marmot':
|
2012-10-16 23:24:17 +02:00
|
|
|
grantee => 'marmot',
|
|
|
|
on_object => 'my_table',
|
|
|
|
perm => 'select',
|
|
|
|
require => Postgresql::User['marmot'],
|
|
|
|
}
|
|
|
|
```
|
2012-04-20 00:37:18 +02:00
|
|
|
|
|
|
|
etc, etc.
|
|
|
|
|
|
|
|
|
|
|
|
Automated testing
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
Install and setup an [RVM](http://beginrescueend.com/) with
|
|
|
|
[vagrant](http://vagrantup.com/),
|
|
|
|
[sahara](https://github.com/jedi4ever/sahara), and
|
|
|
|
[rspec](http://rspec.info/)
|
|
|
|
|
|
|
|
$ curl -L get.rvm.io | bash -s stable
|
|
|
|
$ rvm install 1.9.3
|
|
|
|
$ rvm use --create 1.9.3@puppet-postgresql
|
|
|
|
$ gem install vagrant sahara rspec
|
|
|
|
|
|
|
|
Run the tests like so:
|
|
|
|
|
|
|
|
$ (cd spec; vagrant up)
|
|
|
|
$ rspec -f -d -c
|
|
|
|
|
|
|
|
The test suite will snapshot the VM and rollback between each test.
|
|
|
|
|
|
|
|
Next, take a look at the manifests used for the automated tests.
|
|
|
|
|
|
|
|
spec/
|
2013-01-16 01:09:10 +01:00
|
|
|
test_module/
|
|
|
|
manifests/
|
|
|
|
test_*.pp
|
2012-04-20 00:37:18 +02:00
|
|
|
|
|
|
|
|
|
|
|
Contributors
|
|
|
|
------------
|
|
|
|
|
|
|
|
* Andrew Moon
|
|
|
|
* [Kenn Knowles](https://github.com/kennknowles) ([@kennknowles](https://twitter.com/KennKnowles))
|
2013-01-16 01:09:10 +01:00
|
|
|
* Adrien Thebo
|
|
|
|
* Albert Koch
|
|
|
|
* Andreas Ntaflos
|
|
|
|
* Brett Porter
|
|
|
|
* Chris Price
|
|
|
|
* dharwood
|
|
|
|
* Etienne Pelletier
|
|
|
|
* Florin Broasca
|
|
|
|
* Henrik
|
|
|
|
* Hunter Haugen
|
|
|
|
* Jari Bakken
|
|
|
|
* Jordi Boggiano
|
|
|
|
* Ken Barber
|
|
|
|
* nzakaria
|
|
|
|
* Richard Arends
|
|
|
|
* Spenser Gilliland
|
|
|
|
* stormcrow
|
|
|
|
* William Van Hevelingen
|
2012-04-20 00:37:18 +02:00
|
|
|
|
|
|
|
|
|
|
|
Copyright and License
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|