119 lines
4.6 KiB
Terraform
119 lines
4.6 KiB
Terraform
# =============================================================================
|
|
# TUNNEL OUTPUTS
|
|
# =============================================================================
|
|
|
|
output "tunnel_id" {
|
|
description = "ID du tunnel Cloudflare"
|
|
value = cloudflare_zero_trust_tunnel_cloudflared.home_tunnel.id
|
|
}
|
|
|
|
output "tunnel_cname" {
|
|
description = "CNAME du tunnel Cloudflare"
|
|
value = "${cloudflare_zero_trust_tunnel_cloudflared.home_tunnel.id}.cfargotunnel.com"
|
|
}
|
|
|
|
output "tunnel_token" {
|
|
description = "Token pour l'agent cloudflared (SENSIBLE). Pour la haute dispo, installer PLUSIEURS replicas cloudflared avec ce même token (2 machines = bascule automatique)."
|
|
value = data.cloudflare_zero_trust_tunnel_cloudflared_token.home_tunnel_token.token
|
|
sensitive = true
|
|
}
|
|
|
|
# =============================================================================
|
|
# APPLICATIONS OUTPUTS
|
|
# =============================================================================
|
|
|
|
output "applications_urls" {
|
|
description = "URLs publiques de toutes les applications"
|
|
value = {
|
|
for app_name, app_config in var.applications :
|
|
app_name => "https://${app_config.subdomain}.${var.cloudflare_zone}"
|
|
}
|
|
}
|
|
|
|
output "applications_dns_records" {
|
|
description = "IDs des enregistrements DNS créés"
|
|
value = {
|
|
for app_name, dns_record in cloudflare_dns_record.applications :
|
|
app_name => dns_record.id
|
|
}
|
|
}
|
|
|
|
# =============================================================================
|
|
# BRIQUE SITES DISTANTS
|
|
# =============================================================================
|
|
|
|
output "remote_site_tunnel_tokens" {
|
|
description = "Token cloudflared de chaque site distant (SENSIBLE) — à installer sur le connecteur du site"
|
|
value = {
|
|
for site, token in data.cloudflare_zero_trust_tunnel_cloudflared_token.remote_sites :
|
|
site => token.token
|
|
}
|
|
sensitive = true
|
|
}
|
|
|
|
output "remote_site_virtual_networks" {
|
|
description = "ID du réseau virtuel de chaque site (pour warp-cli vnet <id>)"
|
|
value = {
|
|
for site, vnet in cloudflare_zero_trust_tunnel_cloudflared_virtual_network.remote_sites :
|
|
site => vnet.id
|
|
}
|
|
}
|
|
|
|
output "warp_connector_tokens" {
|
|
description = "Token d'installation de chaque WARP Connector (SENSIBLE) — brique inerte si aucun ID renseigné"
|
|
value = {
|
|
for site, resp in data.http.warp_connector_tokens :
|
|
site => try(jsondecode(resp.response_body).result, null)
|
|
}
|
|
sensitive = true
|
|
}
|
|
|
|
# =============================================================================
|
|
# BRIQUE SSH
|
|
# =============================================================================
|
|
|
|
output "ssh_classic_public_key" {
|
|
description = "Clé publique SSH (brique SSH par clé) — à déposer dans ~/.ssh/authorized_keys du serveur cible"
|
|
value = trimspace(tls_private_key.ssh_classic.public_key_openssh)
|
|
}
|
|
|
|
output "ssh_classic_private_key" {
|
|
description = "Clé privée SSH (SENSIBLE — présente dans le state). Récupération : terraform output -raw ssh_classic_private_key"
|
|
value = tls_private_key.ssh_classic.private_key_openssh
|
|
sensitive = true
|
|
}
|
|
|
|
output "ssh_ca_aws" {
|
|
description = "Clé publique de la CA de certificats éphémères (app SSH AWS) — à déposer dans /etc/ssh/ca.pub du serveur"
|
|
value = cloudflare_zero_trust_access_short_lived_certificate.aws_ssh_ca.public_key
|
|
}
|
|
|
|
output "ssh_ca_gcp" {
|
|
description = "Clé publique de la CA de certificats éphémères (app SSH GCP) — à déposer dans /etc/ssh/ca.pub du serveur"
|
|
value = cloudflare_zero_trust_access_short_lived_certificate.gcp_ssh_ca.public_key
|
|
}
|
|
|
|
# =============================================================================
|
|
# BRIQUE SERVICE TOKENS
|
|
# =============================================================================
|
|
|
|
output "service_token_gitea_ci_id" {
|
|
description = "Client ID du service token Gitea CI (en-tête CF-Access-Client-Id)"
|
|
value = cloudflare_zero_trust_access_service_token.gitea_ci.client_id
|
|
}
|
|
|
|
output "service_token_gitea_ci_secret" {
|
|
description = "Client Secret du service token Gitea CI (SENSIBLE, en-tête CF-Access-Client-Secret)"
|
|
value = cloudflare_zero_trust_access_service_token.gitea_ci.client_secret
|
|
sensitive = true
|
|
}
|
|
|
|
# =============================================================================
|
|
# BRIQUE IdP AZURE
|
|
# =============================================================================
|
|
|
|
output "azure_idp_id" {
|
|
description = "ID de l'identity provider Azure Entra ID (null si brique désactivée)"
|
|
value = var.azure_idp_enabled ? cloudflare_zero_trust_access_identity_provider.azure_entra_id[0].id : null
|
|
}
|