The binaries for Varnish Controller support three types of configuration: Passing the configuration flags as arguments to the binary, from the configuration file or by environment variables.
The precedence of these has the following order:
The name of the environment variables can be seen in the help (-h
) for the binaries. Configuration flags are aligned between
all binaries except for binary-specific configuration flags.
Example of output from the help flag, showing environment variable names:
varnish-controller-agent -h
Usage of varnish-controller-agent:
-agent-name string
Name of the agent, must be system wide unique.
[ENV: VARNISH_CONTROLLER_AGENT_NAME] (default "agent1")
-base-dir string
Absolute path to base dir for generated files of the agent.
[ENV: VARNISH_CONTROLLER_BASE_DIR] (default "/var/lib/varnish-controller/varnish-controller-agent/")
-config string
Configuration file.
[ENV: VARNISH_CONTROLLER_CONFIG]
...
Configuration files generated with -generate-config
can be combined into one configuration file used by brainz, agents, routers and api-gw.
The configuration file can be structured in the following way (supported from Varnish Controller 3.0.0).
# Configuration shared by all components
nats-server = localhost:4222
nats-ping-interval = 2s
...
[brainz]
# brainz specific configuration
# Overriding nats-ping-interval for brainz.
nats-ping-interval = 5s
...
[api-gw]
# api-gw specific configuration
http-port = 8002
...
[agent]
# agent specific configuration
name = "agent1"
...
[router]
# router specific configuration
name = "router1"
...
A configuration file can be generated from the binary with the flag -generate-config
. This will output a valid configuration file
to stdout. Any other argument/environment variable given at the time of generation will be included as the value in the configuration
file. Otherwise the default values will be used. The generated configuration can be output to a file and then be used as an argument with -config <file>
.
The agent and Varnish can run on different servers as long as they have access to the same folder where the agent
places the VCL files in (-base-dir
). The agent must also be able to reach the varnishadm
port on the Varnish server.
The agent will also need to know about the Varnish secret
in order to communicate via varnishadm
.
All agents and routers need to have unique names (-agent-name
or -router-name
). The name is used with NATS and requires an alphanumeric name.
When private tokens are used (version 5.0+), the names can be the same as long as the private token is different between the agents.
The agent in Varnish Controller is using the varnishadm
rather intensively. This generates quite a lot CLI logging.
To disable CLI logging, change the parameter syslog_cli_traffic
from on
to off
for varnishd
.