Re: Use environment variables in postgresql.conf - Mailing list pgsql-general

From imagenesis@gmail.com
Subject Re: Use environment variables in postgresql.conf
Date
Msg-id CABxodt9PvZLUVaVYXJCWObvVQqyFWE0c_A2RSAD=z9JUKC_R+A@mail.gmail.com
Whole thread Raw
In response to Re: Use environment variables in postgresql.conf  (Andrew Sullivan <ajs@crankycanuck.ca>)
Responses Re: Use environment variables in postgresql.conf  (David Johnston <polobo@yahoo.com>)
Re: Use environment variables in postgresql.conf  (Andrew Sullivan <ajs@crankycanuck.ca>)
List 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@crankycanuck.ca> wrote:
On Sat, Nov 30, 2013 at 06:54:31PM -0500, imagenesis@gmail.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@crankycanuck.ca


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

pgsql-general by date:

Previous
From: Andrew Sullivan
Date:
Subject: Re: Use environment variables in postgresql.conf
Next
From: David Johnston
Date:
Subject: Re: Use environment variables in postgresql.conf