puppet/postgresql/manifests/init.pp

145 lines
3.5 KiB
Puppet

# Install PostgreSQL client
#
class postgresql::client {
package { "postgresql":
ensure => installed,
}
}
# Install PostgreSQL Configuation Tuner
#
class postgresql::pgtune {
package { "pgtune":
ensure => installed,
}
}
# Install PostgreSQL server
#
# === Parameters:
#
# $datadir:
# Data directory for databases.
#
class postgresql::server($datadir="/srv/pgsql") {
case $::operatingsystem {
"centos","redhat": {
file { "/etc/sysconfig/pgsql/postgresql":
ensure => present,
content => "PGDATA=/srv/pgsql\n",
mode => "0644",
owner => "root",
group => "root",
require => Package["postgresql-server"],
notify => Service["postgresql"],
}
}
default: {
fail("postgresql::server not supported in ${::operatingsystem}")
}
}
exec { "service postgresql initdb":
user => "root",
path => "/bin:/usr/bin:/sbin:/usr/sbin",
creates => "/srv/pgsql/postgresql.conf",
require => File["/srv/pgsql"],
before => Service["postgresql"],
}
if $datadir != "/srv/pgsql" {
file { $datadir:
ensure => directory,
mode => "0700",
owner => "postgres",
group => "postgres",
seltype => "postgresql_db_t",
require => Package["postgresql-server"],
}
file { "/srv/pgsql":
ensure => link,
target => $datadir,
owner => "root",
group => "root",
seltype => "postgresql_db_t",
require => File[$datadir],
}
selinux::manage_fcontext { "${datadir}(/.*)?":
type => "postgresql_db_t",
before => File[$datadir],
}
} else {
file { "/srv/pgsql":
ensure => directory,
mode => "0700",
owner => "postgres",
group => "postgres",
seltype => "postgresql_db_t",
require => Package["postgresql-server"],
}
}
selinux::manage_fcontext { "/srv/pgsql(/.*)?":
type => "postgresql_db_t",
before => File["/srv/pgsql"],
}
package { "postgresql-server":
ensure => installed,
}
service { "postgresql":
ensure => running,
enable => true,
hasstatus => true,
}
}
# Install PostgreSQL daily backup job
#
# === Global variables
#
# $datadir:
# Directory where PostgreSQL backups are stored. Defaults
# to /srv/pgsql-backup
#
# $maxage:
# How long to keep MariaDB backups. Defaults to 7 days.
#
class postgresql::server::backup($datadir="/srv/pgsql-backup", $maxage="7") {
file { $datadir:
ensure => directory,
mode => "0700",
owner => "postgres",
group => "postgres",
}
file { "/usr/local/sbin/pgsql-backup":
ensure => present,
content => template("postgresql/pgsql-backup.erb"),
mode => "0755",
owner => "root",
group => "root",
require => File[$datadir],
}
cron { "pgsql-backup":
command => "/usr/local/sbin/pgsql-backup",
environment => [ "MAILTO=root", ],
user => "postgres",
hour => "0",
minute => "20",
require => File["/usr/local/sbin/pgsql-backup"],
}
}