Lack-Konfigurationstest

Lack-Konfigurationstest

Gibt es eine Möglichkeit, die Varnish-Konfigurationssyntax zu überprüfen, ohne tatsächlich die neue Version zu verwenden?

Ich suche nach einem nativen Lackäquivalent vonapache2ctl configtest

Antwort1

Sie können Varnish bitten, Ihre VLC-Datei in eine temporäre Datei zu kompilieren. Dies ist Teil unseres Skripts, das eine neue Konfiguration in unsere Varnish-Server lädt:

tmpfile=$(mktemp)
trap 'rm -f $tmpfile' 0
varnishd -C -f /srv/web/fe/varnish/default.vcl > $tmpfile
echo

if [ ! -s $tmpfile ]; then
    echo "ERROR: There are errors in the varnish configuration." >&2
    exit 1
fi

Dies funktioniert, weil varnishd -Ckeine Ausgabe generiert wird, stdoutwenn in der VCL Fehler vorhanden sind.

Antwort2

Was ist mit varnish_reload_vcl?

Einige Beispiele:

  1. Ohne Probleme in Ihrer VCL-Datei

    $ varnish_reload_vcl
    Loading vcl from /etc/varnish/default.vcl
    Current running config name is reload_2016-01-28T15:18:23
    Using new config name reload_2016-01-28T15:19:57
    VCL compiled.
    VCL 'reload_2016-01-28T15:19:57' now active
    available       0 boot
    available       0 reload_2016-01-28T14:40:04
    available       0 reload_2016-01-28T14:42:07
    available       0 reload_2016-01-28T14:42:32
    available       0 reload_2016-01-28T14:47:45
    available       0 reload_2016-01-28T14:48:45
    available       0 reload_2016-01-28T14:50:26
    available       0 reload_2016-01-28T14:55:55
    available       0 reload_2016-01-28T15:18:23
    active          0 reload_2016-01-28T15:19:57
    
    Done
    
  2. Bei einem Fehler in Ihrer VCL-Datei

    $ varnish_reload_vcl
    Loading vcl from /etc/varnish/default.vcl
    Current running config name is reload_2016-01-28T15:19:57
    Using new config name reload_2016-01-28T15:21:51
    Message from VCC-compiler:
    Symbol not found: 'b1' (expected type BACKEND):
    ('input' Line 77 Pos 32)
            set req.backend_hint = b1;
    -------------------------------##-
    
    Running VCC-compiler failed, exited with 2
    VCL compilation failed
    Command failed with error code 106
    varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 vcl.load failed
    

verwandte Informationen