Commit graph

45 commits

Author SHA1 Message Date
Mickaël Canévet
5065246512 Add support for installing PL/Perl 2013-07-10 15:20:57 +02:00
Ken Barber
f6fb18a5b3 Fix up and add some tests for unknown OS patch
This patch just adds some new tests for the unknown OS patch, and cleans up
some existing tests to look for the new warning message.

Also, change the warning message for $osfamily and manage_package_repo to
reflect the parameter at fault.

Signed-off-by: Ken Barber <ken@bob.sh>
2013-06-06 20:53:36 +01:00
Chris Price
6bd2befa98 Add support for other operating systems besides Redhat/Debian
Prior to this commit, if you attempted to use the module to
manage postgres on any OS other than Redhat/Debian, there
was an explicit check for that, and a call to `fail`.

In reality, the OS family is only used to build up defaults
for various path and package names, which are all exposed
as parameters.  If the user is willing to explicitly pass
in all of those parameters, there's no reason we should
fail based on OS family.

This commit adds checks to the 'default' osfamily case
such that we now only fail if they're on a non-Redhat-or-Debian
system *and* they haven't explicitly passed in values for
all of the required parameters.
2013-06-06 12:23:30 -07:00
Ken Barber
80c85e8f2b Convert system tests to use rspec-system
This patch ports all of the existing system tests to use rspec-system instead.

To assist with this conversion some patches were made to fix OS compatibility
where necessary. We also added an ensure parameter to the postgresql::server
class to assist with removing PostgreSQL configuration to aid with testing
cleanups.

The documentation has been updated to indicate test usage with rspec-system,
we've also renamed the 'tests' directory to 'examples'.

Signed-off-by: Ken Barber <ken@bob.sh>
2013-06-04 15:36:24 +01:00
Dan Prince
03b3df3ab9 Add test on postgresql::python. 2013-04-22 11:30:07 -04:00
Flaper Fesp
9a307d986a Add support for psycopg installation 2013-04-22 11:04:01 -04:00
Kamil Szymanski
c6aec41f1b Add supprot for contrib package 2013-03-02 10:46:34 +01:00
Ken Barber
794ef22934 Fix versions for travis-ci
This fixes some mistakes in the .travis.yml file:

* Corrects matches so the minor gem revisions get rounded, this means 2.6.0
  for example is used.
* Adds Ruby 2.0.0 tests
* Allows 2.6.0 to fail for now, as it doesn't have create_resources.
* Removes trailing commas and arrays in functions for 2.6.0.

Signed-off-by: Ken Barber <ken@bob.sh>
2013-02-26 14:32:25 +00:00
Ken Barber
501289394a Cleaned up and added unit tests
Signed-off-by: Ken Barber <ken@bob.sh>
2013-02-25 17:50:53 +00:00
Karel Brezina
5ef164b1a6 Generalization to provide more flexibility in postgresql configuration 2013-02-25 17:50:34 +00:00
Erik Dalén
23368ffb03 fix lots of style issues 2013-02-15 17:22:52 +01:00
fhrbek
e29e0c0d58 Reverted some of the coding style fixes. Strings containing single quotes may be easier to read if enclosed in double quotes although it generated puppet lint warning. 2013-02-07 10:51:33 +01:00
Ken Barber
39862106b2 Merge pull request #117 from fhrbek/coding_style
Coding style fixes
2013-02-06 14:32:39 -08:00
fhrbek
10cb81468e Coding style fixes 2013-02-06 18:51:58 +01:00
Michael Arnold
556ab32b73 Add support for JDBC connector.
Modify params.pp to abstract the package name for the postgresql JDBC
connector and add Class['postgresql::java'].  Also update the README.md
to mention the availability of this class.
2013-02-05 23:22:13 -07:00
Ken Barber
2114333539 Add locale parameter support
This adds the parameter 'locale' to the 'postgresql' class so we have a global
default, and adds it two the defined resources 'postgresql::db' and
'postgresql::database'. This allows users to either:

* Defined a global default for the cluster
* Define a per-database default

As a side-effect I had to make sure 'charset' was also exposed in a similar
manner as some locales need a particular charset to work.

Tests were added to test both the 'createdb' case and 'initdb' case for Redhat,
and some refactoring was done to make the existing non_default test area use
heredocs so my manifests and test code was kept close together. As apposed to
entirely different files and places in the directory structure.

I cleaned up the related execs a little bit, adding logoutput => on_failure
where needed so we can debug failures. Beforehand execs just 'failed', but
now we should be able to get better feedback from failed execs helping support.

I also add intention comments in parts of the Puppet code that I touched where
it made sense.

Signed-off-by: Ken Barber <ken@bob.sh>
2013-02-05 17:23:52 +00:00
Flaper Fesp
219e7445bd Removed trailing comma. Makes puppet fail 2013-01-18 15:58:47 +01:00
Jordi Boggiano
3504405cf0 Add support for ubuntu 12.10 status 2013-01-15 23:31:14 +01:00
Ken Barber
faeac44713 Manage official postgres apt repo
Previously we hadn't supported using the official PostgreSQL repos for deb-based
packaging. This commit fixes that by introducing the management of the apt
repositories on the host as required, and using the correct package and service
name.

Signed-off-by: Ken Barber <ken@bob.sh>
2013-01-15 11:00:24 -08:00
Chris Price
5f705ddf32 Fix merge issue from AMZ linux patch 2013-01-14 14:14:10 -08:00
Ken Barber
3a180d80cb Merge pull request #66 from cprice-puppet/maint/master/allow-version-param-in-main-init
Change API to expose non-default pg version support via main type
2013-01-14 14:04:24 -08:00
Henrik
5c89dc11f9 data dirs on amazon differ 2013-01-14 22:40:59 +01:00
Henrik
6cb9071bfd Updating params.
The OS Family for Amazon Linux is "Linux", and $::operatingsystem is
"Amazon".
2013-01-14 22:40:05 +01:00
Hunter Haugen
6c0b1eff95 Update the base class to accept version parameter 2013-01-11 14:23:56 -08:00
Spenser Gilliland
457f80bfe4 Syntax Fix 2012-12-21 17:26:48 -06:00
Florin Broasca
b02556f96c Fix default version for Ubuntu and Debian 2012-12-09 23:56:27 +02:00
Chris Price
228e5c5337 Cleanup and move control of version into params
Thanks to some tricks I learned from Nan Liu and Dan Bode, I was
able to figure out a way to move all of the new version-related stuff
back into the params class, and clean up some of the if/_real stuff.

Basic tests for centos6 + pg 9.2 are passing.
2012-12-04 14:12:41 -08:00
Chris Price
18167c7a3e Merge platform.pp back into params.pp
Nan showed me a trick that will let us keep all of that param stuff
inside of params.pp, make it a parameterized class, and still support
the ability for users to specify a custom (non-system-default) pg
version.  This commit takes the first step towards that pattern by
consolidating platform.pp and params.pp.  (Everything old is new again!)
2012-12-04 14:12:34 -08:00
Chris Price
90ed7aaf6d Working on getting ubuntu specs passing again
The service provider / status stuff got a little broken during
the refactors.  This should mostly fix it but there is still
one spec failing, and I will probably also refactor the
paths.pp and packages.pp into a single file together eventually.
2012-12-02 20:56:36 -08:00
Etienne Pelletier
1fe9559bbe Refactored multi-version support. 2012-12-02 20:54:33 -08:00
Etienne Pelletier
a5d3de2dc4 Pulled repository stuff out of params.
Lint cleanup.
2012-12-02 20:49:47 -08:00
Chris Price
b9a51be36e Fix paths 2012-12-02 20:49:47 -08:00
Etienne Pelletier
8e96959ca8 Added easier support for Postgresql 9.0 (on RedHat platforms) 2012-12-02 20:49:47 -08:00
William Van Hevelingen
bdf6c0b84c Puppet lint fixes
- left longer than 80 char warnings
 - left inherits params class warnings
2012-11-03 02:37:20 +00:00
stormcrow
399709a483 first commit of acls 2012-10-21 23:46:54 -07:00
Adrien Thebo
5e713569ac Add postgresql::devel for development dependencies 2012-10-16 21:22:30 -07:00
Matthaus Owens
82c5863431 Update status for postgres service on Debian
The postgresql init script on debian/ubuntu returns 0 no matter whether postgresql is started or stopped, so puppet has no way of knowing whether to start postgresql when the service is set to 'ensure => running'. This commit adds a param to the params class called $service_status which is set to the status piped to an egrep on debian/ubuntu, which reliably returns 0 if there are clusters running and 1 if there are none. The output before and after this patch can be seen below. If the init script is fixed at some point, the logic would need to be revisited.

Before patch postgresql remains stopped after puppet run.

$ # service postgresql stop
$ #   * Stopping PostgreSQL 9.1 database server
$ # puppet apply -e "class {'postgresql::server':}"
$ #   notice: Finished catalog run in 0.15 seconds
$ # service postgresql status
$ #   Running clusters:

After patch postgresql is started after puppet run.

$ # service postgresql stop
$ #   * Stopping PostgreSQL 9.1 database server
$ # puppet apply -e "class {'postgresql::server':}"
$ #   notice: /Stage[main]/Postgresql::Server/Service[postgresqld]/ensure: ensure changed 'stopped' to 'running'
$ #   notice: Finished catalog run in 2.26 seconds
$ # service postgresql status
$ #   Running clusters: 9.1/main
2012-09-28 15:53:33 -07:00
Kenn Knowles
7181817e6a Merge pull request #9 from cprice-puppet/feature/master/connection-validator
Feature/master/connection validator
2012-09-16 18:34:58 -07:00
Chris Price
fd1b15b950 Add a type for validating a postgres connection
This commit adds a new resource type that can be used to validate
that a successful postgres connection can be established from a
puppet node to a (potentially remote) postgres database instance.
2012-09-14 13:26:28 -07:00
Matthaus Litteken
61f077bb20 Remove $service_provider setting for ubuntu
Ubuntu's precise ships with init scripts, not with upstart service definitions. Declaring the provider to be upstart will cause service management on postgres to fail. Leaving it undefined will allow puppet to select the correct (init) provider.
2012-09-12 22:11:10 -07:00
Chris Price
cc5cad39a7 Fix for debian 6 service name
It turns out that Ubuntu and Debian have different names
for the postgres service; this fix makes the module
compatible with debian 6.
2012-06-14 15:12:51 -07:00
Chris Price
1175ea20d6 Add postgresql::db convenience type, improve security
This commit adds a postgresql::db type for convenience;
it mirrors the 'db' type from the mysql module, which
allows you to create a database instance and user plus
grant privileges to that user all in one succint
resource.

This commit also improves security in the following ways:

* Revoke "CONNECT" privilege from the 'public' role for
  newly created databases; without this, any database
  created via this module will allow connections from
  any database user, and will allow them to do things
  like create tables.

* Change to a 'reject'-based policy for dealing with
  remote connections by the postgres user in pg_hba.conf.
  Prior to this commit, if you tried to restrict access
  to the postgres user by IP, the rule would simply not
  match for disallowed IPs; then it would fall through
  to the rule for "all" users, which could still match
  and thus allow the postgres user to connect remotely.
2012-06-09 09:23:11 -07:00
Chris Price
45055d324c Bring database, database_user, and database_grant into alignment with mysql module
Renamed a few files and made some tweaks to try to get
database_grant, database_user, and database types into
a state where they work very similarly to the ones in
the mysql module.  Also introduced a "postgresql_password"
function that can be used to generate an md5 password
hash for a postgres user.
2012-06-08 22:30:27 -07:00
Chris Price
ba802475ff Improve configuration for initial postgres install
This commit adds some configuration management for
postgres, to allow users to get a more complete
setup from their initial install.  Prior to this
commit, we were basically only ensuring that the
package was installed and the service was running.

Now, we support limited configuration for the
pg_hba.conf file to enable md5 authentication for
remote hosts, and for the postgresql.conf file
to specify the listener addresses where TCP
connections should be accepted.  Without these
two changes the initial postgres configuration
doesn't allow *any* connections from outside of the
local host.

This commit also adds an option for opening up the
postgres port in the firewall on redhat-based systems,
and an option to allow setting the password for the
'postgres' database user.

As of this commit, this module now has dependencies
on puppetlabs-stdlib (version > 2.3.4, which includes
the new 'match' parameter for the 'file_line' resource
type), and on puppetlabs-firewall.
2012-06-08 14:00:24 -07:00
Chris Price
6034e122de Working version of postgresql::server
This is a first working version of postgresql::server.
It includes a very simple test manifest, which has
been tried out on CentOS6 and Ubuntu 10.04; initial
tests were successful both from a clean state and
for subsequent runs.

Includes a new fact called 'postgres_default_version',
which detects what the default version of postgres is
for a given OS.  This is needed because some of the
commands and directory names include this version string.

Current implementation *only* supports managing the
system default version; in the future it would be nice
to allow the user to explicitly specify a postgres version,
but that isn't yet supported.

The "postgresql::server" class includes a call to postgres's
initdb command on redhat systems, because they don't do
this automatically when the package is installed.
2012-06-08 13:37:21 -07:00