Variables substitution in jail.conf

Niklaas Baudet von Gersdorff stdin at niklaas.eu
Wed Mar 30 14:55:54 UTC 2016


James Gritton [2016-03-30 07:47 -0600] :

> Niklaas Baudet von Gersdorff <stdin at niklaas.eu> wrote:
> 
> >     host.hostname = "$name.box-fra-01.klaas";
> >     path          = "/usr/local/jails/$name";
> >     ip4.addr      = "lo1|10.15.$network.$id";
> >     ip6.addr      = "vtnet0|2a00:XXX:XXXX:XXXX:X::$network:$id";
> >     mount         = "/usr/local/jails/templates/base-10.2-RELEASE 
> > /usr/local/jails/$name/     nullfs ro 0 0";
> >     mount        += "/usr/local/jails/thinjails/$name             
> > /usr/local/jails/$name/jail nullfs rw 0 0";
> >     mount.devfs;
> > 
> >     exec.start    = "/bin/sh /etc/rc";
> >     exec.stop     = "/bin/sh /etc/rc.shutdown";
> > 
> >     exec.clean;
> > 
> >     www {
> >         $id            = 1;
> >         $network       = 1;
> >         exec.poststart = "pfctl -t www -T add ${ip4.addr} {$ip6.addr}";
> >         exec.poststop  = "pfctl -t www -T delete {$ip4.addr} {$ip6.addr}";
> > }

> The problem is pretty simple - just a case of moving some brackets.  In 
> the definition of exec.poststart, you did ip4.addr right - ${ip4.addr}.  
> But for ip6.addr, you moved the dollar sign inside the braces - 
> {$ip6.addr}.  That makes it look like the braces and the ".addr" are 
> just part of the string, and only $ip6 is the variable to be 
> substituted.
> 
> So all you need is:
> 
>          exec.poststart = "pfctl -t www -T add ${ip4.addr} ${ip6.addr}";
>          exec.poststop  = "pfctl -t www -T delete ${ip4.addr} 
> ${ip6.addr}";

Indeed, that was it. Thanks. Four eyes see more than two. Anyway, that leaves
me with the problem that the variables expand to lo1|something and
vtnet0|something. I tried to set custom variables but that's not possible, is
it?


More information about the freebsd-questions mailing list