This is a folder of example backend providers for Cromwell. You can read about the providers here, and then copy paste one or more of the providers you want to use to your Cromwell configuration file, represented here as the cromwell.example.conf file in the base of the repository.
- AWS: Amazon Web Services (documentation)
- BCS Alibaba Cloud Batch Compute (BCS) backend (documentation)
- TES is a backend that submits jobs to a server with protocol defined by GA4GH (documentation)
- PAPIv2: Google Pipelines API backend (version 2!) (documentation)
- Docker: an example backend that only runs workflows with docker in every command
- Singularity: run Singularity containers locally (documentation)
- Singularity+Slurm: An example using Singularity with SLURM (documentation)
- TESK is the same, but intended for Kubernetes. See the TES docs at the bottom.
- udocker: to interact with udocker locally documentation
- udocker+Slurm: to interact with udocker on SLURM (documentation)
- HtCondor: a workload manager at UW-Madison (documentation)
- LSF: the Platform Load Sharing Facility backend (documentation)
- SGE: a backend for Sungrid Engine (documentation)
- slurm: SLURM workload manager (documentation)
- LocalExample: What you should use if you want to define a new backend provider (documentation)
The section in the file called "backends" has a key, "providers" that looks like this:
backend {
# Override the default backend.
#default = "LocalExample"
# The list of providers. Copy paste the contents of a backend provider in this section
providers {
....
}
}
The examples here also have this section. You would want to copy paste the content of the file, specifically the section for the provider under backend -> providers, into the backend -> providers section in the cromwell.example.conf. Here is what it would look like to add the slurm backend provider example.
backend {
# Override the default backend.
#default = "LocalExample"
# The list of providers. Copy paste the contents of a backend provider in this section
providers {
slurm {
...
}
}
# Second backend provider would be copy pasted here!
}
}
This isn't json, so you don't need to add commas between the providers - just copy paste them one after the other in the backend -> providers section. Let's say we wanted slurm to be our default! We would do this:
backend {
# Override the default backend.
default = slurm
# The list of providers. Copy paste the contents of a backend provider in this section
providers {
slurm {
...
}
}
}
}
Don't forget to customize the sections for your purposes! If anything is not explained clearly, please open an issue.
If a provider is missing and you don't want to use the LocalExample to write a custom provider, please let us know and we can start discussion about how to define your backend.