65 lines
2.2 KiB
Terraform
65 lines
2.2 KiB
Terraform
terraform {
|
|
required_providers {
|
|
cloudflare = {
|
|
# Cap < 6.0.0 : on accepte les évolutions de la v5 mais jamais un saut
|
|
# de version majeure automatique (c'est un provider v5 non épinglé qui
|
|
# avait déclenché le crash cty avec Terraform 1.7.5).
|
|
source = "cloudflare/cloudflare"
|
|
version = ">= 5.12.0, < 6.0.0"
|
|
}
|
|
vault = {
|
|
source = "hashicorp/vault"
|
|
version = "~> 4.6"
|
|
}
|
|
# Génération de la paire de clés SSH pour la brique "accès SSH par clé"
|
|
tls = {
|
|
source = "hashicorp/tls"
|
|
version = "~> 4.0"
|
|
}
|
|
# Récupération des tokens WARP Connector via l'API Cloudflare
|
|
# (brique "sites distants")
|
|
http = {
|
|
source = "hashicorp/http"
|
|
version = "~> 3.4"
|
|
}
|
|
}
|
|
# >= 1.8.0 obligatoire : le provider Cloudflare v5 utilise des attributs
|
|
# dynamiques qui font CRASHER le core 1.7.x (bug cty corrigé en 1.8).
|
|
# La CI utilise 1.15.8.
|
|
required_version = ">= 1.8.0"
|
|
}
|
|
|
|
# Providers
|
|
provider "cloudflare" {
|
|
api_token = local.cloudflare_api_token
|
|
}
|
|
|
|
provider "vault" {
|
|
address = var.vault_url
|
|
skip_child_token = true
|
|
# CORRECTIF SÉCURITÉ : la vérification TLS est désormais activée par défaut.
|
|
# ACTION EXTERNE : vault.tips-of-mine.com doit présenter un certificat valide
|
|
# (Let's Encrypt, CA interne importée sur le runner CI, etc.).
|
|
# En dépannage uniquement : vault_skip_tls_verify = true dans le tfvars.
|
|
skip_tls_verify = var.vault_skip_tls_verify
|
|
|
|
# Deux modes d'authentification :
|
|
# - AppRole (recommandé pour la CI) : renseigner vault_role_id +
|
|
# vault_secret_id (secrets Gitea VAULT_ROLE_ID / VAULT_SECRET_ID) ->
|
|
# la CI obtient un token COURT à chaque run, plus de token statique
|
|
# longue durée qui traîne. Mise en place : voir ACTIONS_EXTERNES.md.
|
|
# - Token statique (mode historique, toujours fonctionnel) : vault_token.
|
|
token = var.vault_role_id != "" ? null : var.vault_token
|
|
|
|
dynamic "auth_login" {
|
|
for_each = var.vault_role_id != "" ? [1] : []
|
|
content {
|
|
path = "auth/approle/login"
|
|
parameters = {
|
|
role_id = var.vault_role_id
|
|
secret_id = var.vault_secret_id
|
|
}
|
|
}
|
|
}
|
|
}
|