This is the application package reference.
An application package is the deployment unit in Vespa.
To deploy an application, create an application package
and vespa deploy or
use the deploy API.
The application package is a directory of files and subdirectories:
Files that are guaranteed to be ignored by Vespa: They
are excluded when processing the application package and
cannot be referenced from any other element in it.
Additional files and directories can be placed anywhere in the application package.
These will be not be processed explicitly by Vespa when deploying the application package
(i.e. they will only be considered if they are referred to from within the application package),
but there is no guarantee to how these might be processed in a future release.
To extend the application package in a way that is guaranteed
to be ignored by Vespa in all future releases, use the ext/ directory.
Deploy
Command
Description
upload
Uploads an application package to the config server.
Normally not used, as prepare includes upload
prepare
Verifies that a configuration server is up and running
Uploads the application to the configuration server, which stores it in
$VESPA_HOME/var/db/vespa/config_server/serverdb/tenants/default/sessions/[sessionid].
[sessionid] increases for each prepare-call.
The config server also stores the application in a
ZooKeeper
instance at /config/v2/tenants/default/sessions/[sessionid] -
this distributes the application to all config servers
Creates metadata about the deployed the applications package (which user deployed it,
which directory was it deployed from and at what time was it deployed) and stores it in
...sessions/[sessionid]/.applicationMetaData
Verifies that the application package contains the required files and performs a consistency check
Validates the xml config files using the
schema,
found in $VESPA_HOME/share/vespa/schema
Checks if there are config changes between the active application and this prepared application
that require actions like restart or re-feed (like changes to
schemas).
These actions are returned as part of the prepare step in the
deployment API.
This prevents breaking changes to production - also read about
validation overrides
Distributes constant tensors and bundles with components
to nodes using file distribution.
Files are downloaded to $VESPA_HOME/var/db/vespa/filedistribution,
URL download starts downloading to $VESPA_HOME/var/db/vespa/download
Use fetch to download the active application package
An application package can be zipped for deployment:
$ zip -r ../app.zip .
Use any name for the zip file - then refer to the file instead of the path in deploy commands.
Important:
Using tar / gzip is not supported.
Details.
Preprocess directives
Use preprocess directives to:
preprocess:properties:
define properties that one can refer to everywhere in services.xml
preprocess:include:
split services.xml in smaller chunks
Below, ${container.port} is replaced by 4099.
The contents of content.xml is placed at the include point.
This is applied recursively, one can use preprocess directives in included files,
as long as namespaces are defined in the top level file: