server.pp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # Class: postgresql::server
  2. #
  3. # == Class: postgresql::server
  4. # Manages the installation of the postgresql server. manages the package and
  5. # service.
  6. #
  7. # === Parameters:
  8. # [*package_name*] - name of package
  9. # [*service_name*] - name of service
  10. #
  11. # Configuration:
  12. # Advanced configuration setting parameters can be placed into 'postgresql_puppet_extras.conf' (located in the same
  13. # folder as 'postgresql.conf'). You can manage that file as a normal puppet file resource, or however you see fit;
  14. # which gives you complete control over the settings. Any value you specify in that file will override any existing
  15. # value set in the templated version.
  16. #
  17. # Actions:
  18. #
  19. # Requires:
  20. #
  21. # Sample Usage:
  22. #
  23. class postgresql::server (
  24. $ensure = 'present',
  25. $package_name = $postgresql::params::server_package_name,
  26. $package_ensure = 'present',
  27. $service_name = $postgresql::params::service_name,
  28. $service_provider = $postgresql::params::service_provider,
  29. $service_status = $postgresql::params::service_status,
  30. $config_hash = {},
  31. $datadir = $postgresql::params::datadir
  32. ) inherits postgresql::params {
  33. if ($ensure == 'absent') {
  34. service { 'postgresqld':
  35. ensure => stopped,
  36. name => $service_name,
  37. enable => false,
  38. provider => $service_provider,
  39. hasstatus => true,
  40. status => $service_status,
  41. }->
  42. package { 'postgresql-server':
  43. ensure => purged,
  44. name => $package_name,
  45. tag => 'postgresql',
  46. }->
  47. file { $datadir:
  48. ensure => absent,
  49. recurse => true,
  50. force => true,
  51. }
  52. } else {
  53. package { 'postgresql-server':
  54. ensure => $package_ensure,
  55. name => $package_name,
  56. tag => 'postgresql',
  57. }
  58. $config_class = {
  59. 'postgresql::config' => $config_hash,
  60. }
  61. create_resources( 'class', $config_class )
  62. service { 'postgresqld':
  63. ensure => running,
  64. name => $service_name,
  65. enable => true,
  66. require => Package['postgresql-server'],
  67. provider => $service_provider,
  68. hasstatus => true,
  69. status => $service_status,
  70. }
  71. if ($postgresql::params::needs_initdb) {
  72. include postgresql::initdb
  73. Package['postgresql-server'] -> Class['postgresql::initdb'] -> Class['postgresql::config'] -> Service['postgresqld']
  74. }
  75. else {
  76. Package['postgresql-server'] -> Class['postgresql::config'] -> Service['postgresqld']
  77. }
  78. exec { 'reload_postgresql':
  79. path => '/usr/bin:/usr/sbin:/bin:/sbin',
  80. command => "service ${service_name} reload",
  81. onlyif => $service_status,
  82. refreshonly => true,
  83. }
  84. }
  85. }