Provider
Fonctionnalité en préparation. Cette page décrit l'interface cible pour recueillir vos retours ; rien n'est encore utilisable.
apiVersion | tofu.stackngo.io/v1alpha1 |
kind | Provider |
| Appliqué par | sng apply (à venir) |
| Utilisé par | Workspace.spec.providers[].name |
À quoi ça sert
Déclarer une fois la configuration d'un provider OpenTofu (endpoint, région, credentials)
et la réutiliser dans tous les Workspace du tenant. Les attributs secrets ne quittent
jamais les secrets du tenant. Guide : Providers.
Exemple minimal
apiVersion: tofu.stackngo.io/v1alpha1
kind: Provider
metadata:
name: aws-eu
spec:
type: aws
config: {region: eu-west-3}
envFrom:
- secretRef: {name: aws-credentials}
Exemple complet commenté
apiVersion: tofu.stackngo.io/v1alpha1
kind: Provider
metadata:
name: ovh-gra
spec:
type: ovh # ^[a-z][a-z0-9_-]*$
source: ovh/ovh # comparé aux required_providers du module
version: "~> 1.6" # informatif
alias: gra # pour plusieurs configurations du même type
config: # attributs non secrets, écrits tels quels
endpoint: ovh-eu
configFrom: # attributs secrets : une variable sensible par attribut
- attribute: application_key
secretRef: {name: ovh-credentials, key: application_key}
- attribute: application_secret
secretRef: {name: ovh-credentials, key: application_secret}
envFrom: # variables d'environnement du run
- secretRef: {name: ovh-extra-env}
Champs
Règles de validation : type suit ^[a-z][a-z0-9_-]*$, alias suit ^[a-z_][a-z0-9_]*$,
source a la forme espace/nom ; les entrées de configFrom sont indexées par attribute
(pas de doublon).
Provider
Provider : configuration d'un provider OpenTofu, citée par nom dans les Workspace.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
apiVersion string | tofu.stackngo.io/v1alpha1 | ||
kind string | Provider | ||
metadata ObjectMeta | Seul metadata.name est à renseigner (nom de la ressource dans votre tenant). | ||
spec ProviderSpec | |||
status ProviderStatus |
ProviderSpec
ProviderSpec : configuration d'un provider OpenTofu pour les Workspace de votre tenant.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
type string | Type : nom local du provider, celui du bloc provider "<type>" (ex. ovh, aws). | Pattern: ^[a-z][a-z0-9_-]*$ | |
source string | Source : adresse du provider (ex. ovh/ovh, hashicorp/aws), contrôlée contre les required_providers du module. Absent = aucun contrôle. | Pattern: ^([a-z0-9.-]+/)?[a-z0-9_-]+/[a-z0-9_-]+$ Optional: {} | |
version string | Version : contrainte attendue, informative (avertissement si le module diffère). | Optional: {} | |
alias string | Alias : bloc provider aliasé (provider = <type>.<alias> dans le module). | Pattern: ^[a-z_][a-z0-9_]*$ Optional: {} | |
config JSON | Config : attributs non secrets du bloc provider (objet JSON). | Type: object Optional: {} | |
configFrom ProviderSecretAttr array | ConfigFrom : attributs secrets, injectés par variable sensible. | Optional: {} | |
envFrom ProviderEnvFrom array | EnvFrom : variables d'environnement de l'exécution, lues dans des secrets. | Optional: {} |
ProviderStatus
ProviderStatus : état observé.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
observedGeneration integer | Dernière version du manifeste prise en compte par la plateforme. | Optional: {} | |
conditions Condition array | Conditions : Ready (tous les secrets et clés référencés existent). | Optional: {} | |
inputsHash string | InputsHash : empreinte de la spec et des secrets référencés ; un changement relance les Workspace qui utilisent ce Provider. | Optional: {} |
ProviderSecretAttr
ProviderSecretAttr : attribut du bloc provider lu dans un secret de votre tenant.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
attribute string | Attribute : nom de l'attribut HCL (ex. application_secret). | Pattern: ^[a-z_][a-z0-9_]*$ | |
secretRef SecretKeyRef | SecretRef : secret et clé de la valeur. |
ProviderEnvFrom
ProviderEnvFrom : secret dont chaque clé devient une variable d'environnement de l'exécution (identifiants lus nativement par le provider, ex. AWS_ACCESS_KEY_ID).
| Champ | Description | Défaut | Validation |
|---|---|---|---|
secretRef LocalObjectReference | Secret de votre tenant dont toutes les clés sont fournies au Provider comme variables d'environnement. |
SecretKeyRef
SecretKeyRef : une clé d'un secret de votre tenant.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
name string | Nom du Secret de votre tenant. | MinLength: 1 | |
key string | Clé du Secret qui contient la valeur. | MinLength: 1 |
Statut et conditions
| Condition | Sens |
|---|---|
Ready | Tous les secrets référencés existent et portent les clés attendues |
status.inputsHash change quand un secret référencé change : les Workspaces qui citent le
Provider rejouent alors un run.
Ce qui se passe quand vous supprimez
Un Provider n'exécute rien par lui-même. Le supprimer alors qu'un Workspace le cite laisse ce
Workspace en erreur au prochain run (ProviderMismatch ou secret manquant).
Erreurs fréquentes
ProviderMismatchsur le Workspace :typeousourcene correspond pas au module.- Credentials ignorés : le provider lit ses credentials dans l'environnement (cas
aws) : utiliserenvFrom, pasconfigFrom.