Getting Started
In this section, we will discuss the jarvis command line interface. We will discuss the basic steps of how to create a deployment pipeline. In this example, we will deploy only IOR, but more complex pipelines with more applications deployed at once can be made.
Setup
spack install ior
Define the Job Hostfile
Before jarvis can be used to deploy, the hostfile must be provided.
jarvis hostfile set [path-to-hostfile.txt]
This hostfile is used by all jarvis deployments.
Build Resource Graph
NOTE: This step is not needed for machines which have pre-configured resource graphs. Skip this step when deploying in Ares. Do this step when deploying on your personal machine.
First we have to collect information about the system. The resource-graph utility command depends on fi_info and lsblk. Make sure if these are not provided by your machine, they are loaded.
To begin polling the system, run:
jarvis rg build +walkthrough
This information will be stored under ${JARVIS_ROOT}/config/resource_graph.yaml
. The command uses SSH to connect to all pkgs. It will use the hostfile from the previous command and scan those pkgs.
Create an empty pipeline
The following command will create an empty pipeline "my_pipeline":
jarvis pipeline create ior_test
After creating a pipeline, jarvis will focus on that pipeline.
Updating a pipline
The very vast majority of problems encountered in Jarvis are because a pipeline did not get updated. One common mistake is that a hostfile changes, but the pipeline doesn't get updated. Pipelines initially build configuration files to each specific program in the pipeline. For example, a storage system would need to know the changed hosts and then rebuild its configuration based on those new systems.
To update a pipeline, run:
jarvis ppl update
Build Environment
Next, we must make jarvis aware of all environment variables needed to execute applications in the pipeline. Jarvis automatically captures most relevant variables, including PATH, LD_LIBRARY_PATH, etc. This allows Jarvis to forward environment variables through SSH.
jarvis ppl env build
Alternatively, if you have an environment you would like to use across pipelines, you can create a named environment as follows:
jarvis env build my_env_name
This named environment can then be copied to a pipeline as follows:
jarvis ppl env copy my_env_name
NOTE: this is machine-dependent. You would have to have these modules installed on your machine before-hand.
NOTE: LD_PRELOAD should NOT be one of the environment variables set here. Jarvis has specific "Interceptor" pkgs for handling LD_PRELOAD.
Add pkgs to the pipeline
To add pkgs to the pipeline:
jarvis ppl append ior api=posix xfer=4k block=1m out=/tmp/ior.bin
Start a pipeline
To start the service for the configured pipeline, do:
jarvis ppl run
Get the status of the pipeline
To check whether the pipeline is functioning, do:
jarvis ppl status
NOTE: This command is not always implemented
Clean a pipeline
Pipelines can create a bunch of data. For example, OrangeFS may contain data leftover from a benchmark. To destroy this data, run:
jarvis ppl clean
Re-configuring a pkg
There may be cases where you need to reconfigure a pkg in the pipeline. To do this, run configure:
jarvis pkg conf ior api=mpiio
Unlinking and removing pkg
s
- Unlinking a
pkg
means Jarvis will remove thepkg
from the pipeline, without destroying thepkg
's metadata. This will allow it to be re-appended in the future. - Removing a
pkg
means Jarvis will remove thepkg
from the pipeline AND destroy its metadata.
jarvis pkg unlink [pkg_id]
jarvis pkg remove [pkg_id]
Changing to a different pipeline
To make jarvis start, end, etc. apply to a different pipeline, use jarvis cd
jarvis cd [pipeline_name]
NOTE: Jarvis stores the current pipeline in a file. Only one pipeline can be active at a time for a user.
Destroying a pipeline
To destroy a pipeline, its pkgs, and all metadata associated with it:
jarvis ppl destroy [pipeline_name (opt)]
If no pipeline_name is provided, the current pipeline will be destroyed.
Listing Existing Pipelines
To list all existing pipelines, run:
jarvis ppl list
Viewing the pkgs in a Pipeline
jarvis ppl print
Viewing the contents of a Pipeline
This will print the contents of the pipeline's root directory.
To view the CONFIG_DIR of the pipeline:
ls $(jarvis path)
To view the PRIVATE_DIR of the pipeline:
ls $(jarvis path +private)
To view the SHARED_DIR of the pipeline:
ls $(jarvis path +shared)
Clear a pipeline
The following will remove all pkgs from a pipeline:
jarvis ppl reset
Resetting Jarvis
The following command will destroy the metadata for all pipelines in Jarvis. It will ask for confirmation to avoid accidents.
jarvis reset
Other Examples
Each Jarvis repo contains its own README, which goes every specific examples. For example, gray_scott shows an example of deploying over Hermes.