<div dir="auto"><div>Nice idea Alex. </div><div dir="auto"><br></div><div dir="auto">I use import_file and include_file and fill this with my settings from Puppet. </div><div dir="auto"><br></div><div dir="auto">Many ways to get your config strings. </div><div dir="auto"><br></div><div dir="auto">There is also some ENV stuff for Kamailio to feature config strings into startup for container environments AFAIK. </div><div dir="auto"><br></div><div dir="auto">Cheers </div><div dir="auto">Karsten </div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">Alex Balashov <<a href="mailto:abalashov@evaristesys.com">abalashov@evaristesys.com</a>> schrieb am Mo., 11. Nov. 2019, 06:45:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I prefer more flexibility, and so use a slightly more ornate approach<br>
involving the Jinja2 template engine (inspired by Jango)[1] and Python<br>
3. I'll spread it in the network in the hope that it helps someone.<br>
<br>
--- kamailio-settings.yaml ---<br>
listeners:<br>
  - proto: udp<br>
    addr: 127.0.0.1<br>
    port: 5060<br>
<br>
  - proto: tcp<br>
    addr: 172.30.105.10<br>
    port: 5060<br>
<br>
db_conn:<br>
  driver: mysql<br>
  user: kamailio_ro<br>
  password: abc123<br>
  host: 172.30.106.11<br>
  name: kamailio<br>
------------------------------<br>
<br>
And the Kamailio config:<br>
<br>
--- kamailio.cfg.tpl ----<br>
#!define DB_URL "{{ db_conn['driver'] }}://{{ db_conn['user'] }}:{{ db_conn['password'] }}@{{ db_c<br>
onn['host'] }}/{{ db_conn['name'] }}"<br>
<br>
...<br>
<br>
{% for l in listeners -%}<br>
listen={{ l['proto'] }}:{{ l['addr'] }}:{{ l['port'] }}<br>
{% endfor %}<br>
-------------------------<br>
<br>
And:<br>
<br>
--- apply.py ---<br>
#!/usr/bin/python3<br>
<br>
import sys, os, re, yaml<br>
from jinja2 import Template, Environment<br>
<br>
env = Environment()<br>
cfg_buf = None<br>
settings = None<br>
<br>
<br>
with open('/usr/local/etc/kamailio/kamailio.cfg.tpl', 'r') as f:<br>
  cfg_buf = f.read()<br>
<br>
tpl_instance = env.from_string(cfg_buf)<br>
<br>
with open('kamailio-settings.yaml', 'r') as f:<br>
  settings = yaml.load(f.read(), Loader=yaml.FullLoader)<br>
<br>
finished = tpl_instance.render(settings)<br>
<br>
with open('/usr/local/etc/kamailio/kamailio.cfg', 'w') as f:<br>
  f.write(finished)<br>
----------------<br>
<br>
Then, this goes in the systemd unit:<br>
<br>
   ExecStartPre=/usr/bin/python3 /opt/evariste/scripts/apply.py<br>
<br>
Result:<br>
<br>
---<br>
#!define DB_URL "mysql://<a href="http://kamailio_ro:abc123@172.30.106.11/kamailio" rel="noreferrer noreferrer" target="_blank">kamailio_ro:abc123@172.30.106.11/kamailio</a>"<br>
<br>
...<br>
<br>
listen=udp:<a href="http://127.0.0.1:5060" rel="noreferrer noreferrer" target="_blank">127.0.0.1:5060</a><br>
listen=tcp:<a href="http://172.30.105.10:5060" rel="noreferrer noreferrer" target="_blank">172.30.105.10:5060</a><br>
---<br>
<br>
-- Alex<br>
<br>
[1] <a href="https://jinja.palletsprojects.com/en/2.10.x/" rel="noreferrer noreferrer" target="_blank">https://jinja.palletsprojects.com/en/2.10.x/</a><br>
<br>
On Mon, Nov 11, 2019 at 08:00:46AM +0300, Sergey Safarov wrote:<br>
<br>
> You can also update kamailio.cfg to include listeners.cfg<br>
> Example. Need add to kamailio.cfg<br>
> <br>
> ####### Listeners ##########<br>
> include_file "/var/run/kamailio/listeners-eth0.cfg"<br>
> <br>
> Before kamailio started you will generate listeners.cfg file.<br>
> This may by done by drop-in file.<br>
> Need create "/etc/systemd/system/kamailio.service.d/10-listners-eth0.conf"<br>
> with content<br>
> [Service]<br>
> ExecStartPre=/bin/curl -s -S --output /var/run/kamailio/listeners-eth0.cfg<br>
> <a href="http://169.254.169.254/latest/meta-data/public-ipv4" rel="noreferrer noreferrer" target="_blank">http://169.254.169.254/latest/meta-data/public-ipv4</a><br>
> ExecStartPre=/bin/sed --in-place --regexp-extended -e<br>
> 's/(.*)/listen=udp:\1:5060\nlisten=tcp:\1:5060\n/'<br>
> /var/run/kamailio/listeners-eth0.cfg<br>
> <br>
> <br>
> <br>
> On Mon, Nov 11, 2019 at 2:50 AM David Villasmil <<br>
> <a href="mailto:david.villasmil.work@gmail.com" target="_blank" rel="noreferrer">david.villasmil.work@gmail.com</a>> wrote:<br>
> <br>
> > That's the one, thanks @Karsten!<br>
> ><br>
> ><br>
> > More info, i changed my systemd unit to execute a script when starting up,<br>
> > like so:<br>
> ><br>
> > # cat /etc/systemd/system/multi-user.target.wants/kamailio.service<br>
> > [Unit]<br>
> > Description=Kamailio (OpenSER) - the Open Source SIP Server<br>
> > After=network.target<br>
> ><br>
> > [Service]<br>
> > Type=forking<br>
> > Environment='CFGFILE=/etc/kamailio/kamailio.cfg'<br>
> > Environment='SHM_MEMORY=64'<br>
> > Environment='PKG_MEMORY=8'<br>
> > Environment='USER=kamailio'<br>
> > Environment='GROUP=kamailio'<br>
> > EnvironmentFile=-/etc/default/kamailio<br>
> > EnvironmentFile=-/etc/default/kamailio.d/*<br>
> > # PIDFile requires a full absolute path<br>
> > PIDFile=/var/run/kamailio/kamailio.pid<br>
> > ExecStart=/etc/kamailio/startkam.sh<br>
> > Restart=on-abort<br>
> ><br>
> > [Install]<br>
> > WantedBy=multi-user.target<br>
> ><br>
> > And /etc/kamailio/startkam.sh is like:<br>
> ><br>
> > #!/bin/bash<br>
> ><br>
> > MYSQL=$(/etc/kamailio/aws-getpass.sh dev us-east-1 dburl)<br>
> > SHM_MEMORY=64<br>
> > PKG_MEMORY=8<br>
> > USER=kamailio<br>
> > GROUP=kamailio<br>
> > CFGFILE=/etc/kamailio/kamailio.cfg<br>
> > /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f $CFGFILE -m<br>
> > $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP -A "DBURL=\"$MYSQL\"" -A<br>
> > "CBDBURL=\"cb=>$MYSQL\"" -A "ASGDBURL=\"asg=>$MYSQL\""<br>
> ><br>
> > which in turn calls /etc/kamailio/aws-getpass.sh, which is the actual<br>
> > script talking to AWS via BOTO3 to get the data i need.<br>
> ><br>
> > You can just change the params and use them in your kam script normally<br>
> > like:<br>
> ><br>
> > modparam("acc", "db_url", DBURL )<br>
> ><br>
> > Hope that helps.<br>
> ><br>
> > Regards,<br>
> ><br>
> > David Villasmil<br>
> > email: <a href="mailto:david.villasmil.work@gmail.com" target="_blank" rel="noreferrer">david.villasmil.work@gmail.com</a><br>
> > phone: +34669448337<br>
> ><br>
> ><br>
> > On Sun, Nov 10, 2019 at 9:22 PM Alex Balashov <<a href="mailto:abalashov@evaristesys.com" target="_blank" rel="noreferrer">abalashov@evaristesys.com</a>><br>
> > wrote:<br>
> ><br>
> >> -A ... oh wow. That's savvy! Cheers.<br>
> >><br>
> >> On Sun, Nov 10, 2019 at 08:51:59PM +0100, Karsten Horsmann wrote:<br>
> >><br>
> >> > Hi David,<br>
> >> ><br>
> >> > You mean this thread from may 2019.<br>
> >> > <a href="https://lists.kamailio.org/pipermail/sr-users/2019-May/105599.html" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/pipermail/sr-users/2019-May/105599.html</a><br>
> >> ><br>
> >> > Pro Tipp, search on <a href="http://lists.kamailio.org/pipermail/" rel="noreferrer noreferrer" target="_blank">lists.kamailio.org/pipermail/</a> to get your link.<br>
> >> Great<br>
> >> > help the mailing list archive btw.<br>
> >> ><br>
> >> > Cheers<br>
> >> > Karsten<br>
> >> ><br>
> >> > David Villasmil <<a href="mailto:david.villasmil.work@gmail.com" target="_blank" rel="noreferrer">david.villasmil.work@gmail.com</a>> schrieb am So., 10.<br>
> >> Nov.<br>
> >> > 2019, 19:03:<br>
> >> ><br>
> >> > > I needed to discover the user/pass for the dB when kamailio starts so<br>
> >> as<br>
> >> > > not to store it locally. I get the data via an AWS script, then start<br>
> >> > > kamailio passing the parameters, then use of those in the script. You<br>
> >> can<br>
> >> > > do exactly this to get and set the current ip address.<br>
> >> > ><br>
> >> > > I don’t know how to share a thread from this mailing list, but search<br>
> >> for<br>
> >> > > the subject “ define a DBURL with SLQOPS fails” and you will find all<br>
> >> info<br>
> >> > > there.<br>
> >> > ><br>
> >> > > On Sun, 10 Nov 2019 at 17:48, Alex Balashov <<br>
> >> <a href="mailto:abalashov@evaristesys.com" target="_blank" rel="noreferrer">abalashov@evaristesys.com</a>><br>
> >> > > wrote:<br>
> >> > ><br>
> >> > >> On Sun, Nov 10, 2019 at 06:16:44PM +0100, Alejandro Recarey wrote:<br>
> >> > >><br>
> >> > >> > Hi, I am trying to get kamailio working cloud provider, autoscaling<br>
> >> > >> > them behind a TCP load balancer.<br>
> >> > >> ><br>
> >> > >> > Is there a way for kamailio to discover its Public IP at startup?<br>
> >> Or<br>
> >> > >> > do people generally program their own startup scripts that modify<br>
> >> the<br>
> >> > >> > kamailio config file before starting it?<br>
> >> > >><br>
> >> > >> They generally do the latter, especially since public IP discovery<br>
> >> > >> mechanisms tend to be specific to the cloud provider.<br>
> >> > >><br>
> >> > >> But various templating mechanisms make this quite easy to do.<br>
> >> > >><br>
> >> > >> --<br>
> >> > >> Alex Balashov | Principal | Evariste Systems LLC<br>
> >> > >><br>
> >> > >> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)<br>
> >> > >> Web: <a href="http://www.evaristesys.com/" rel="noreferrer noreferrer" target="_blank">http://www.evaristesys.com/</a>, <a href="http://www.csrpswitch.com/" rel="noreferrer noreferrer" target="_blank">http://www.csrpswitch.com/</a><br>
> >> > >><br>
> >> > >> _______________________________________________<br>
> >> > >> Kamailio (SER) - Users Mailing List<br>
> >> > >> <a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
> >> > >> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> >> > >><br>
> >> > > --<br>
> >> > > Regards,<br>
> >> > ><br>
> >> > > David Villasmil<br>
> >> > > email: <a href="mailto:david.villasmil.work@gmail.com" target="_blank" rel="noreferrer">david.villasmil.work@gmail.com</a><br>
> >> > > phone: +34669448337<br>
> >> > > _______________________________________________<br>
> >> > > Kamailio (SER) - Users Mailing List<br>
> >> > > <a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
> >> > > <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> >> > ><br>
> >><br>
> >> > _______________________________________________<br>
> >> > Kamailio (SER) - Users Mailing List<br>
> >> > <a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
> >> > <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> >><br>
> >><br>
> >> --<br>
> >> Alex Balashov | Principal | Evariste Systems LLC<br>
> >><br>
> >> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)<br>
> >> Web: <a href="http://www.evaristesys.com/" rel="noreferrer noreferrer" target="_blank">http://www.evaristesys.com/</a>, <a href="http://www.csrpswitch.com/" rel="noreferrer noreferrer" target="_blank">http://www.csrpswitch.com/</a><br>
> >><br>
> >> _______________________________________________<br>
> >> Kamailio (SER) - Users Mailing List<br>
> >> <a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
> >> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> >><br>
> > _______________________________________________<br>
> > Kamailio (SER) - Users Mailing List<br>
> > <a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
> > <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> ><br>
<br>
> _______________________________________________<br>
> Kamailio (SER) - Users Mailing List<br>
> <a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br>
<br>
-- <br>
Alex Balashov | Principal | Evariste Systems LLC<br>
<br>
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free) <br>
Web: <a href="http://www.evaristesys.com/" rel="noreferrer noreferrer" target="_blank">http://www.evaristesys.com/</a>, <a href="http://www.csrpswitch.com/" rel="noreferrer noreferrer" target="_blank">http://www.csrpswitch.com/</a><br>
<br>
_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank" rel="noreferrer">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote></div></div></div>