Defined Type: postgresql::server::instance::service

Defined in:
manifests/server/instance/service.pp

Summary

Manages the service for the postgres main instance (default) or additional instances

Overview

Parameters:

  • service_ensure (Variant[Enum['running', 'stopped'], Boolean]) (defaults to: $postgresql::server::service_ensure)

    Ensure service is installed

  • service_enable (Boolean) (defaults to: $postgresql::server::service_enable)

    Enable the PostgreSQL service

  • service_manage (Boolean) (defaults to: $postgresql::server::service_manage)

    Defines whether or not Puppet should manage the service.

  • service_name (String[1]) (defaults to: $postgresql::server::service_name)

    Overrides the default PostgreSQL service name.

  • service_provider (Optional[String[1]]) (defaults to: $postgresql::server::service_provider)

    Overrides the default PostgreSQL service provider.

  • service_status (String[1]) (defaults to: $postgresql::server::service_status)

    Overrides the default status check command for your PostgreSQL service.

  • user (String[1]) (defaults to: $postgresql::server::user)

    Overrides the default PostgreSQL super user and owner of PostgreSQL related files in the file system.

  • port (Stdlib::Port) (defaults to: $postgresql::server::port)

    Specifies the port for the PostgreSQL server to listen on. Note: The same port number is used for all IP addresses the server listens on. Also, for Red Hat systems and early Debian systems, changing the port causes the server to come to a full stop before being able to make the change. Default value: 5432. Meaning the Postgres server listens on TCP port 5432.

  • default_database (String[1]) (defaults to: $postgresql::server::default_database)

    Specifies the name of the default database to connect with. On most systems this is ‘postgres’.

  • psql_path (Stdlib::Absolutepath) (defaults to: $postgresql::server::psql_path)

    Specifies the path to the psql command.

  • connect_settings (Hash) (defaults to: $postgresql::server::default_connect_settings)

    Specifies a hash of environment variables used when connecting to a remote server. Becomes the default for other defined types, such as postgresql::server::role.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'manifests/server/instance/service.pp', line 20

define postgresql::server::instance::service (
  Variant[Enum['running', 'stopped'], Boolean] $service_ensure   = $postgresql::server::service_ensure,
  Boolean                                      $service_enable   = $postgresql::server::service_enable,
  Boolean                                      $service_manage   = $postgresql::server::service_manage,
  String[1]                                    $service_name     = $postgresql::server::service_name,
  Optional[String[1]]                          $service_provider = $postgresql::server::service_provider,
  String[1]                                    $service_status   = $postgresql::server::service_status,
  String[1]                                    $user             = $postgresql::server::user,
  Stdlib::Port                                 $port             = $postgresql::server::port,
  String[1]                                    $default_database = $postgresql::server::default_database,
  Stdlib::Absolutepath                         $psql_path        = $postgresql::server::psql_path,
  Hash                                         $connect_settings = $postgresql::server::default_connect_settings,
) {
  anchor { "postgresql::server::service::begin::${name}": }

  if $service_manage {
    service { "postgresqld_instance_${name}":
      ensure    => $service_ensure,
      enable    => $service_enable,
      name      => $service_name,
      provider  => $service_provider,
      hasstatus => true,
      status    => $service_status,
    }

    if $service_ensure in ['running', true] {
      # This blocks the class before continuing if chained correctly, making
      # sure the service really is 'up' before continuing.
      #
      # Without it, we may continue doing more work before the database is
      # prepared leading to a nasty race condition.
      postgresql_conn_validator { "validate_service_is_running_instance_${name}":
        run_as           => $user,
        db_name          => $default_database,
        port             => $port,
        connect_settings => $connect_settings,
        sleep            => 1,
        tries            => 60,
        psql_path        => $psql_path,
        require          => Service["postgresqld_instance_${name}"],
        before           => Anchor["postgresql::server::service::end::${name}"],
      }
      Postgresql::Server::Database <| title == $default_database |> -> Postgresql_conn_validator["validate_service_is_running_instance_${name}"]
    }
  }

  anchor { "postgresql::server::service::end::${name}": }
}