[asterisk-users] Parameterize asterisk config files
Andrew Latham
lathama at gmail.com
Tue Oct 2 19:10:29 CDT 2012
On Tue, Oct 2, 2012 at 8:04 PM, Steve Edwards <asterisk.org at sedwards.com> wrote:
> On Tue, 2 Oct 2012, Mitch Claborn wrote:
>
>> I'd like to be able to use the same config files in CVS and have the
>> differences resolved at run time, based on host name of the asterisk server.
>>
>> Another idea would be to write a simple perl or other program to
>> pre-process the files and put some markers in the files themselves.
>
>
> I don't use CVS, old bad habits die hard :)
>
> I use a preprocessor. Specifically:
>
> http://git.dyne.org/freej/plain/lib/javascript/config/preprocessor.pl
>
> (Not where I got it from, but it's the same file.)
>
> because it had enough features and because my production hosts already have
> Perl so I didn't have to add yet another scripting language.
>
> This preprocessor allows you to do '#if HOSTNAME==v0' where HOSTNAME is a
> shell environment variable or it can be defined on the command line.
>
> You can also define variables in an 'include' file
>
> It will do a whole lot more, but 'if' and substitution were the only
> features I needed at the time. If I could have deciphered 'm4' I might have
> used that, but the sendmail.mc files look too damn ugly to maintain.
>
> I hacked in CURDATE and CURTIME as 'pre-defined variables'.
>
> Here's a sample of one of my files:
>
> #
> # Filename: /source/src/${PROJECT}/manager.conf.pre
> #
> # Version: 001
> #
> # Edit date: 2008-12-02
> #
> # Facility: Asterisk
> #
> # Abstract: Define connections to the manager interface.
> #
> # Environment: Asterisk
> #
> # Author: Steven L. Edwards
> #
> # Modified by
> #
> # 000 2008-10-17 SLE Started documenting.
> # 001 2008-12-02 SLE Preprocessorize.
> #expand ; Created by makefile on __CURDATE__ at __CURTIME__
> #expand ; from __FILE__
>
> [general]
> enabled = yes
> port = 5038
> #if HOSTNAME==v0
> bindaddr = 127.0.0.1
> #else
> bindaddr = 0.0.0.0
> #endif
>
> [@AMI_USERNAME@]
> deny = 0.0.0.0/0.0.0.0
> #if HOSTNAME==v0
> permit = 127.0.0.1/255.255.255.255
> #else
> permit = 192.168.0.0/255.255.255.0
> #endif
> read = all
> secret = @AMI_SECRET@
> write = all
>
> ; (end of /etc/asterisk/manager.conf)
> # (end of /source/src/${PROJECT}/manager.conf.pre)
>
> This gets munged by my makefile so deployment consists of 'make rsync;
> make config'
>
> --
> Thanks in advance,
> -------------------------------------------------------------------------
> Steve Edwards sedwards at sedwards.com Voice: +1-760-468-3867 PST
> Newline Fax: +1-760-731-3000
While we are at it, GIT, Python Fabric and sed balance out most of my
deployment needs. There are other moving parts but those are my own
design...
--
~ Andrew "lathama" Latham lathama at gmail.com http://lathama.net ~
More information about the asterisk-users
mailing list