On Tue, Aug 25, 2020 at 9:20 AM Batanun B <[email protected]> wrote:
>
> On Mon, Aug 24, 2020 at 11:07 PM Dridi Boukelmoune <[email protected]> wrote:
>
> > Hi,
> >
> > You can't do that, but you can move the backend definition inside
> > environment.vcl instead to keep your default.vcl the same across all
> > environments.
>
> Hi,
>
> Too bad... Strange thing to require hard coded strings. Is there a technical 
> reason for that?

Yes, definitions need to be constant!

> Yeah, I actually ended up doing just that, moving the entire backend 
> definition to the separate file. But I would have preferred having the base 
> structure in the main vcl file, and only the actual host names (and other 
> environment specific configuration) in the separate vcl file. Also, if they 
> were variables, I would be able to use them elsewhere in the vcl (like in 
> synth output, which was my main goal originally). If I want to do that now, I 
> would have to define the same host name multiple times.

I guess, what you want is constants:

https://github.com/varnishcache/varnish-cache/pull/3134

Specifically, from this example, but redacted to remove test-case syntax:

https://github.com/varnishcache/varnish-cache/pull/3134/files#diff-996416d1d725c18f8a7bf688cc2f4a52

environment.vcl:
    const string be_host = "example.com";
    const duration be_tmo = 3s;

main vcl:
    vcl 4.1;

    include "environment.vcl";

    backend be {
        .host = be_host;
        .connect_timeout = be_tmo;
    }

Right now you have the option of either moving the whole backend
definition inside environment.vcl or treat your VCL as a template and
populate the environment-specific parts at some stage of your
deployment pipeline.

Cheers,
Dridi
_______________________________________________
varnish-misc mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to