Configuration Reference¶
This page documents all available configuration options for FirecREST.
Below is an example configuration file showing how values can be structured:
Click to view a sample configuration file
apis_root_path: ""
doc_servers:
- url: "http://localhost:8000"
description: "Local environment"
auth:
authentication:
scopes: {}
tokenUrl: "http://keycloak:8080/auth/realms/kcrealm/protocol/openid-connect/token"
publicCerts:
- "http://keycloak:8080/auth/realms/kcrealm/protocol/openid-connect/certs"
ssh_credentials:
fireuser:
private_key: "secret_file:/run/secrets/ssh_private_key_fireuser"
firesrv:
private_key: "secret_file:/run/secrets/ssh_private_key_firesrv"
passphrase: "secret_file:/run/secrets/ssh_passphrase_firesrv"
clusters:
- name: "cluster-slurm-api"
ssh:
host: "192.168.240.2"
port: 22
max_clients: 500
timeout:
connection: 5
login: 5
command_execution: 5
idle_timeout: 60
keep_alive: 5
scheduler:
type: "slurm"
version: "24.11.0"
api_url: "http://192.168.240.2:6820"
api_version: "0.0.42"
timeout: 10
service_account:
client_id: "firecrest-health-check"
secret: "secret_file:/run/secrets/service_account_client_secret"
probing:
interval: 120
timeout: 10
startup_grace_period: 300
datatransfer_jobs_directives:
- "#SBATCH --constraint=mc"
- "#SBATCH --nodes=1"
- "#SBATCH --time=0-00:15:00"
file_systems:
- path: '/home'
data_type: 'users'
default_work_dir: true
- name: "cluster-slurm-ssh"
ssh:
host: "192.168.240.2"
port: 22
max_clients: 500
timeout:
connection: 5
login: 5
command_execution: 5
idle_timeout: 60
keep_alive: 5
scheduler:
type: "slurm"
version: "24.11.0"
timeout: 10
service_account:
client_id: "firecrest-health-check"
secret: "secret_file:/run/secrets/service_account_client_secret"
probing:
interval: 120
timeout: 5
datatransfer_jobs_directives:
- "#SBATCH --nodes=1"
- "#SBATCH --time=0-00:15:00"
- "#SBATCH --account={account}"
file_systems:
- path: '/home'
data_type: 'users'
default_work_dir: true
storage:
name: "s3-storage"
private_url: "http://192.168.240.19:9000"
public_url: "http://localhost:9000"
access_key_id: "storage_access_key"
secret_access_key: "secret_file:/run/secrets/s3_secret_access_key"
region: "us-east-1"
ttl: 604800
multipart:
use_split: false
max_part_size: 2147483648 # 2G
parallel_runs: 3
tmp_folder: "tmp"
max_ops_file_size: 1048576 # 1M
probing:
timeout: 10
In the following tables, you can find all the supported configuration options, along with their types, descriptions, and default values:
Settings
¶
FirecREST configuration. Loaded from a YAML file.
Field | Type | Description | Default |
---|---|---|---|
app_debug |
bool |
Enable debug mode for the FastAPI application. | False |
app_version |
str |
Application version string. | '2.x.x' |
apis_root_path |
str |
Base path prefix for exposing the APIs. | '' |
doc_servers |
List[ dict ] | None |
Optional documentation servers. For completedocumentation see the servers parameter in theFastAPI docs. |
None |
auth |
Auth | Authentication and authorization config (OIDC, FGA). | (required) |
ssh_credentials |
SSHKeysService | Dict[ str , SSHUserKeys ] |
SSH keys service or manually defined user keys. More details in this section. | (required) |
clusters |
List[ HPCCluster ] |
List of configured HPC clusters. | [] |
storage |
Storage | None |
Storage backend configuration. More details in this section. | None |
logger |
Logger | Logging configuration options. | <generated by Logger()> |
Details of auth
(Auth)
Auth
¶
Authentication and authorization configuration.
Field | Type | Description | Default |
---|---|---|---|
authentication |
Oidc | OIDC authentication settings. More info in the authentication section. | (required) |
authorization |
OpenFGA | None |
Authorization settings via OpenFGA. More info in the authorization section. | None |
Details of authentication
(Oidc)
Oidc
¶
OpenID Connect (OIDC) authentication configuration.
Field | Type | Description | Default |
---|---|---|---|
scopes |
dict | None |
Map of OIDC scopes and their purposes. | {} |
token_url |
str |
Token endpoint URL for the OIDC provider. This is used to obtain access tokens for the service account that will do the health checks. | (required) |
public_certs |
List[ str ] |
List of URLs for retrieving public certificates. These are used to verify the OIDC token. | [] |
Details of authorization
(OpenFGA)
OpenFGA
¶
Authorization settings using OpenFGA.
Field | Type | Description | Default |
---|---|---|---|
url |
str |
OpenFGA API base URL. | (required) |
timeout |
int | None |
Connection timeout in seconds. When None the timeout is disabled. |
1 |
max_connections |
int |
Max HTTP connections per host. When set to 0 , there is no limit. |
100 |
Details of ssh_credentials
(SSHKeysService)
SSHKeysService
¶
External service for managing SSH keys.
Field | Type | Description | Default |
---|---|---|---|
url |
str |
URL of the SSH keys management service. | (required) |
max_connections |
int |
Maximum concurrent connections to the service. When set to 0 , there is no limit. |
100 |
Details of ssh_credentials
(SSHUserKeys)
SSHUserKeys
¶
SSH key pair configuration for authenticating to remote systems.
Field | Type | Description | Default |
---|---|---|---|
private_key |
LoadFileSecretStr |
SSH private key. You can give directly the content or the file path using 'secret_file:/path/to/file' . |
(required) |
public_cert |
str | None |
Optional SSH public certificate. | None |
passphrase |
LoadFileSecretStr | None |
Optional passphrase for the private key. You can give directly the content or the file path using 'secret_file:/path/to/file' . |
None |
Details of clusters
(HPCCluster)
HPCCluster
¶
Definition of an HPC cluster, including SSH access, scheduling, and filesystem layout. More info in the systems' section.
Field | Type | Description | Default |
---|---|---|---|
name |
str |
Unique name for the cluster. | (required) |
ssh |
SSHClientPool | SSH configuration for accessing the cluster nodes. | (required) |
scheduler |
Scheduler | Job scheduler configuration. | (required) |
service_account |
ServiceAccount | Service credentials for internal APIs. | (required) |
probing |
ClusterProbing | Probing configuration for monitoring the cluster. | (required) |
file_systems |
List[ FileSystem ] |
List of mounted file systems on the cluster, such as scratch or home directories. | [] |
datatransfer_jobs_directives |
List[ str ] |
Custom scheduler flags passed to data transfer jobs (e.g. -pxfer for a dedicated partition). |
[] |
Details of ssh
(SSHClientPool)
SSHClientPool
¶
SSH connection pool configuration for remote execution.
Field | Type | Description | Default |
---|---|---|---|
host |
str |
SSH target hostname. | (required) |
port |
int |
SSH port. | (required) |
proxy_host |
str | None |
Optional proxy host for tunneling. | None |
proxy_port |
int | None |
Optional proxy port. | None |
max_clients |
int |
Maximum number of concurrent SSH clients. | 100 |
timeout |
SSHTimeouts | SSH timeout settings. | <generated by SSHTimeouts()> |
Details of timeout
(SSHTimeouts)
SSHTimeouts
¶
Various SSH settings.
Field | Type | Description | Default |
---|---|---|---|
connection |
int |
Timeout (seconds) for initial SSH connection. | 5 |
login |
int |
Timeout (seconds) for SSH login/auth. | 5 |
command_execution |
int |
Timeout (seconds) for executing commands over SSH. | 5 |
idle_timeout |
int |
Max idle time (seconds) before disconnecting. | 60 |
keep_alive |
int |
Interval (seconds) for sending keep-alive messages. | 5 |
Details of scheduler
(Scheduler)
Scheduler
¶
Cluster job scheduler configuration.
Field | Type | Description | Default |
---|---|---|---|
type |
enum str (Available options: slurm ) |
Scheduler type. | (required) |
version |
str |
Scheduler version. | (required) |
api_url |
str | None |
REST API endpoint for scheduler. | None |
api_version |
str | None |
Scheduler API version. | None |
timeout |
int | None |
Timeout in seconds for scheduler communication with the API. | 10 |
Details of service_account
(ServiceAccount)
ServiceAccount
¶
Internal service account credentials.
Field | Type | Description | Default |
---|---|---|---|
client_id |
str |
Service account client ID. | (required) |
secret |
LoadFileSecretStr |
Service account secret token. You can give directly the content or the file path using 'secret_file:/path/to/file' . |
(required) |
Details of probing
(ClusterProbing)
ClusterProbing
¶
Cluster monitoring attributes.
Field | Type | Description | Default |
---|---|---|---|
interval |
int |
Interval in seconds between cluster checks. | (required) |
timeout |
int |
Maximum time in seconds allowed per check. | (required) |
Details of file_systems
(FileSystem)
FileSystem
¶
Defines a cluster file system and its type.
Field | Type | Description | Default |
---|---|---|---|
path |
str |
Mount path for the file system. | (required) |
data_type |
enum str (Available options: users , store , archive , apps , scratch , project ) |
File system purpose/type. | (required) |
default_work_dir |
bool |
Mark this as the default working directory. | False |
Details of storage
(Storage)
Storage
¶
Object storage configuration, including credentials, endpoints, and upload behavior.
Field | Type | Description | Default |
---|---|---|---|
name |
str |
Name identifier for the storage. | (required) |
private_url |
str |
Private/internal endpoint URL for the storage. | (required) |
public_url |
str |
Public/external URL for the storage. | (required) |
access_key_id |
str |
Access key ID for S3-compatible storage. | (required) |
secret_access_key |
LoadFileSecretStr |
Secret access key for storage. You can give directly the content or the file path using 'secret_file:/path/to/file' . |
(required) |
region |
str |
Region of the storage bucket. | (required) |
ttl |
int |
Time-to-live (in seconds) for generated URLs. | (required) |
tenant |
str | None |
Optional tenant identifier for multi-tenant setups. | None |
multipart |
MultipartUpload | Settings for multipart upload, including chunk size and concurrency. | <generated by MultipartUpload()> |
bucket_lifecycle_configuration |
BucketLifestyleConfiguration | Lifecycle policy settings for auto-deleting files after a given number of days. | <generated by BucketLifestyleConfiguration()> |
max_ops_file_size |
int |
Maximum file size (in bytes) allowed for direct upload and download. Larger files will go through the staging area. | 5242880 |
probing |
StorageProbing | None |
Configuration for probing storage availability. | None |
Details of multipart
(MultipartUpload)
MultipartUpload
¶
Configuration for multipart upload behavior.
Field | Type | Description | Default |
---|---|---|---|
use_split |
bool |
Enable or disable splitting large files into parts when uploading the file to the staging area. | False |
max_part_size |
int |
Maximum size (in bytes) for multipart data transfers. Default is 2 GB. | 2147483648 |
parallel_runs |
int |
Number of parts to upload in parallel to the staging area. | 3 |
tmp_folder |
str |
Temporary folder used for storing split parts during upload. | 'tmp' |
Details of bucket_lifecycle_configuration
(BucketLifestyleConfiguration)
BucketLifestyleConfiguration
¶
Configuration for automatic object lifecycle in storage buckets.
Field | Type | Description | Default |
---|---|---|---|
days |
int |
Number of days after which objects will expire automatically. | 10 |
Details of probing
(StorageProbing)
StorageProbing
¶
Probing configuration to check availability of the storage system.
Field | Type | Description | Default |
---|---|---|---|
timeout |
int |
Timeout for storage health probing in seconds. | (required) |
Details of logger
(Logger)
Logger
¶
Field | Type | Description | Default |
---|---|---|---|
enable_tracing_log |
bool |
Enable tracing logs. | False |