Expand description
Where signal.yaml comes from, and how it is fetched and cached.
$SIGNAL_CONFIG can name a local path or a remote object:
/etc/opssignal/signal.yaml(or any path): read from diskhttps://config.example.com/signal.yaml: plain GETs3://bucket/key: needs theawscargo featuregs://bucket/object: needs thegcpcargo featureaz://container/blob: needs theazurecargo feature; the storage account comes from$AZURE_STORAGE_ACCOUNT_NAMEappconfig://application/environment/profile: AWS AppConfig, needs theawscargo featureazappconfig://store/key?label=prod: Azure App Configuration, needs theazurecargo featuredynamodb://table/id: an Amazon DynamoDB item, needsawsfirestore://project/collection/document: a Firestore document, needsgcpcosmos://account/database/container/id: an Azure Cosmos DB item, needsazure
Cloud fetches use each platform’s standard credential chain (IAM role / IRSA / env keys on AWS; workload identity / ADC / service account on GCP; workload identity / managed identity / service principal / SAS on Azure), so OpsSignal adds no keys of its own.
A remote config is cached on local disk after every successful
fetch, as the raw text before ${VAR} interpolation, so no
secret is ever written to the cache. If the source can’t be reached
or returns a broken file, the last good cached copy is used instead:
a bucket outage must never be the reason an alert goes missing.
$SIGNAL_CONFIG may also list several files, comma separated, and
any file may extends: others; see Config::from_layers for how
they merge. Each remote file in the chain is cached on its own.
Structs§
- Load
Options - How a client loads and refreshes its config.
Enums§
Constants§
- CACHE_
DIR_ ENV_ VAR - CLOUD_
SCHEMES - The URL schemes each cloud’s add-on serves: config sources, then
the secret stores of
${store:...}placeholders (seesecrets). - DEFAULT_
REFRESH - REFRESH_
ENV_ VAR
Traits§
- External
Fetcher - Reads one URL scheme for a build that was compiled without it.
Functions§
- fetch_
blocking - Fetches the raw text at
urlon a throwaway runtime, with errors in the form anExternalFetcherreturns them. This is what add-on packages call to serve a request.urlis a config source or a secret reference without its#field(aws-sm:prod/slack). - register_
cloud_ fetcher - Registers
fetcherfor every scheme ofcloud(aws,gcporazure; seeCLOUD_SCHEMES). This is what an add-on package does. - register_
fetcher - Registers
fetcherfor one URL scheme (such ass3), replacing any earlier one. A scheme compiled into this build ignores it.