The freva-deployment software#
The freva-deployment software is used to deploy Freva in different computing environments. The general strategy is to split the deployment into different steps, these are : - Deploy a MySQL DB server - Deploy a HashiCorp Vault service for storing and retrieving passwords and other sensitive data (this step get automatically activated once the MySQL DB service is set) - Deploy the Freva-Rest Server The Freva Rest deployment consists of three mandatory and two optional parts:
The actual databrowser rest API
Apache solr search backend
Mongodb to store search statistics
Redis server acting as broker (optional)
Data-Loader server that provisions data (netCDF, grb, HDF5 etc) via zarr streams over http (optional)
Deploy command line interface and python library (freva)
Deploy web front end (freva_web) The web front end deployment is sub divided into three parts:
Deployment of the django web application
Deployment of a redis instance acting as database cache
Deployment as a apache httpd service as a reverse proxy server for connections from the client to the django web application.
TLDR; Quickstart Guide#
If you just want to try out Freva or experiment with the freva-deployment
tooling, you can install it via pip
:
python -m pip install freva-deployment
To customise the configuration, generate a new config file and modify it using
the deploy-freva config
subcommands:
deploy-freva config get -r > freva.toml
deploy-freva config set project_name clex -c freva.toml
If you are fine with setting up all services on one machine and using docker-compose or podman-compose you can create a complete compose file that contains all the services with help of the compose sub command:
deploy-freva compose --help
Usage: deploy-freva compose [-h] [-v] [-V] [-c CONFIG_FILE] [--host HOST]
[-u USER] [--no-plugins] [-e {docker,podman}] [-s]
Options:
-h, --help show this help message and exit
-v, --verbose Verbosity level (default: 0)
-V, --version show program's version number and exit
-c, --config-file CONFIG_FILE
Path to ansible inventory file. (default:
/home/runner/.config/freva/deployment/config/inventory
.toml)
--host HOST Host name where the compose service should be running.
(default: None)
-u, --user USER User name that should run the services insight the
container. (default: root)
--no-plugins Do not setup core library to use plugins. (default:
False)
-e, --container-engine {docker,podman}
Create a compose file for docker or podman. (default:
docker)
-s, --systemd-service
Create a systemd-service file. (default: False)