Re: Use environment variables in postgresql.conf

From: "imagenesis(at)gmail(dot)com" <imagenesis(at)gmail(dot)com>
To: Andrew Sullivan <ajs(at)crankycanuck(dot)ca>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Use environment variables in postgresql.conf
Date: 2013-12-01 01:43:53
Message-ID: CABxodt9PvZLUVaVYXJCWObvVQqyFWE0c_A2RSAD=z9JUKC_R+A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

The questions are:

1. Has var expansion in configuration files been contemplated?
2. Why not do it?

So the presumed workflow is that:

1. There is no support for environment variable expansion in configuration
files
2. Use of environment variable values should only be passed to the
"postgres" on the command line
3. Ie thus passed through to pg_ctl from the OS init scripts.

Reasons why it's perhaps useful to change the presumed workflow:

1. It's perhaps inconvenient
2. Variables are a fundamental concept for configuration
3. Moving configuration to os specific scripts defies the DRY (don't repeat
yourself) paradigm

Proposed workflow:
1. Environment initialization, meaning the declaration of environment
variables (in the sense that "env -i" is probably spawned in the OS
specific scripts and is thus quite empty) for "pg_ctl" should be done in a
postgresql specific shell file.
2. Variable expansion should be done in postgresql specific configuration
files.

On the other hand:
1. One could just generate the conf files
2. Assign env vars to absolute paths/symbolic links

Thanks for your reply Andrew, however I do not necessarily wish to conform
to arbitrary expectations forced by the current implementation if it is
inconvenient/incomplete. Please evaluate the value of workflows facilitated
by said modifications. Using the OS specific start up scripts for
configuration of contexts they are intended to initiate is fundamentally
incorrect. As specified, I do not like the declaration of "postgres"
configuration as command-line options or as environment variables because
said declarations invariably move away from the centrailization of
postgresql configuration to the initailization scripts. However,
considering the PGOPTIONS environment variable, I think it's initailization
in a standardized way by the init scripts is the most relevant to this
workflow.

On Sat, Nov 30, 2013 at 8:06 PM, Andrew Sullivan <ajs(at)crankycanuck(dot)ca>wrote:

> On Sat, Nov 30, 2013 at 06:54:31PM -0500, imagenesis(at)gmail(dot)com wrote:
> > Is it possible to use environment variables in postgresql.conf and
> perhaps
> > related configuration files?
> >
> > For example, I would like to use an env variable to specify the data
> > directory.
>
> On top of what John Pierce says in the thread, I would very strongly
> urge you not to do this. It makes troubleshooting on failure
> notoriously hard. Use the mechanisms the start-up files do, I
> suggest.
>
> That said, see section 18 of the manual -- in particular, 18.1.3 in
> the 9.3 manual ("Other ways to set parameters"). I recommend against
> all that on the basis of some somewhat painful experience, but you can
> do it that way.
>
> If you're determined to do it, I _strongly_ suggest using several
> different postgres.conf files and then only using the config_file
> parameter to control this. At least then you can look at what the
> settings were when you have a crashed or otherwise troublesome system.
>
> Best,
>
> A
>
> --
> Andrew Sullivan
> ajs(at)crankycanuck(dot)ca
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David Johnston 2013-12-01 02:17:46 Re: Use environment variables in postgresql.conf
Previous Message Bruce Momjian 2013-12-01 01:31:34 Re: [GENERAL] pg_upgrade ?deficiency