Provider Configuration
Defines cloud infrastructure providers and connection parameters. YAML files specify provider types, regions, and reference environment variables or secrets for authentication/API access.
Schema
apiVersion: strata.huybrechts.xyz/v1
kind: provider
meta:
name: <resource_name> # Required: ^[a-z][a-z0-9_]*$
annotations:
description: <description>
labels:
version: "<version>"
spec:
properties:
type: <provider_type> # Required: kamatera, azure, aws, gcp, local
region: <region> # Optional: provider region/location
references:
variables: {} # Non-sensitive config (key-value)
secrets: {} # Sensitive credentials (key-value)
Key-Value Format:
Key: IaC template parameter name
Value: Environment variable/secret reference name
Provider Types
Type |
Description |
Typical Regions |
|---|---|---|
|
Kamatera cloud |
|
|
Microsoft Azure |
|
|
Amazon Web Services |
|
|
Google Cloud Platform |
|
|
Local/on-premises |
N/A |
Examples
Kamatera:
meta:
name: kamatera_europe
labels:
version: "1.0.0"
spec:
properties:
type: kamatera
region: eu-fr
references:
variables:
kamatera_manager_id: KAMATERA_MANAGER_ID
secrets:
kamatera_api_key: KAMATERA_API_KEY
kamatera_api_secret: KAMATERA_API_SECRET
kamatera_private_key: KAMATERA_PRIVATE_KEY
Azure:
meta:
name: azure_westeurope
spec:
properties:
type: azure
region: westeurope
references:
variables:
subscription_id: AZURE_SUBSCRIPTION_ID
resource_group: AZURE_RESOURCE_GROUP
secrets:
tenant_id: AZURE_TENANT_ID
client_id: AZURE_CLIENT_ID
client_secret: AZURE_CLIENT_SECRET
Local:
meta:
name: local_dev
spec:
properties:
type: local
references:
variables:
ssh_user: LOCAL_SSH_USER
secrets:
ssh_private_key: LOCAL_SSH_PRIVATE_KEY
Variables vs Secrets
Reference-based approach: Provider files map IaC parameters to environment variables. Actual values loaded externally (env vars, workspace config, secret managers). Credentials never in version control.
Variables (non-sensitive, visible in logs):
Subscription IDs, resource groups, manager IDs
Secrets (sensitive, encrypted/secret managers):
API keys, passwords, private keys, access tokens
Example: kamatera_api_key: KAMATERA_API_KEY → IaC uses kamatera_api_key, platform loads from KAMATERA_API_KEY env var/secret
Workspace Integration
# workspace.yaml
spec:
providers:
- name: kamatera_europe
file: config/providers/kamatera-eu-fr.yaml
topology:
- name: platform_swarm
provider: kamatera_europe # References provider by name
Multi-region setup:
config/providers/
├── kamatera-eu-fr.yaml
├── kamatera-us-ny.yaml
├── azure-westeurope.yaml
└── azure-eastus.yaml
Environment-Specific Provider Overrides
Different environments can use different provider files (e.g., dev vs prod in different regions or cloud accounts). See Environment Provider Overrides for syntax and examples.
Example: Use a different provider file for production:
# environments/prod.yaml
spec:
overrides:
providers:
- provider: kamatera_europe
file: config/providers/kamatera-eu-fr-prod.yaml # Different prod config
This allows dev and prod to deploy to different regions, cloud accounts, or with different authentication without modifying the workspace.
Validation
Platform validates:
Valid provider names (lowercase, alphanumeric, underscores)
Required fields (name, type)
Referenced providers exist in workspace
Environment variables set at runtime
Troubleshooting
Provider not found: Verify name matches workspace topology, check file path Missing credentials: Ensure env vars set, names match exactly (case-sensitive), check secret manager connectivity Region errors: Confirm region valid for provider, check documentation