Job Templates
Templating Support in Bacalhau Job Run
Overview
This documentation introduces templating support for bacalhau job run
, providing users with the ability to dynamically inject variables into their job specifications. This feature is particularly useful when running multiple jobs with varying parameters such as DuckDB query, S3 buckets, prefixes, and time ranges without the need to edit each job specification file manually.
Motivation
The motivation behind this feature arises from the need to streamline the process of preparing and running multiple jobs with different configurations. Rather than manually editing job specs for each run, users can leverage placeholders and pass actual values at runtime.
Templating Implementation
The templating functionality in Bacalhau is built upon the Go text/template
package. This powerful library offers a wide range of features for manipulating and formatting text based on template definitions and input variables.
For more detailed information about the Go text/template
library and its syntax, please refer to the official documentation: Go text/template
Package.
Usage Examples
Sample Job Spec (job.yaml)
Running with Templating:
Defining Flag Multiple Times:
Disabling Templating:
Using Environment Variables:
You can also use environment variables for templating:
Passing A Subset of Environment Variables:
Dry Run to Preview Templated Spec:
To preview the final templated job spec without actually submitting the job, you can use the --dry-run
flag:
This will output the processed job specification, showing you how the placeholders have been replaced with the provided values.
More Examples
Query Live Logs
This is an ops
job that runs on all nodes that match the job selection criteria. It accepts duckdb query
variable, and two optional start-time
and end-time
variables to define the time range for the query.
To run this job, you can use the following command:
Query S3 Logs
This is a batch
job that runs on a single node. It accepts duckdb query
variable, and four other variables to define the S3 bucket, prefix, pattern for the logs and the AWS region.
To run this job, you can use the following command: