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
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
All agents and routers need to have unique names (
-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