#!/bin/bash # ============================================================================= # Script de configuration Vault pour Cloudflare Tunnel # ============================================================================= set -e VAULT_ADDR="${VAULT_ADDR:-https://vault.tips-of-mine.com}" VAULT_PATH="secret/cloudflare" echo "🔐 Configuration Vault pour Cloudflare Tunnel" echo "==============================================" echo "" echo "Vault Address: $VAULT_ADDR" echo "Secret Path: $VAULT_PATH" echo "" # Vérifier que Vault CLI est installé if ! command -v vault &> /dev/null; then echo "❌ Erreur: vault CLI n'est pas installé" echo " Installation: https://www.vaultproject.io/downloads" exit 1 fi # Vérifier la connexion à Vault echo "🔍 Vérification de la connexion à Vault..." if ! vault status &> /dev/null; then echo "❌ Impossible de se connecter à Vault" echo " Assurez-vous que VAULT_ADDR et VAULT_TOKEN sont définis" exit 1 fi echo "✅ Connecté à Vault" echo "" # Fonction pour demander une valeur ask_value() { local var_name=$1 local prompt=$2 local is_secret=${3:-false} if [ "$is_secret" = true ]; then read -s -p "$prompt: " value echo "" else read -p "$prompt: " value fi echo "$value" } # Mode interactif ou non if [ "$1" = "--interactive" ] || [ "$1" = "-i" ]; then echo "📝 Mode interactif - Entrez vos informations Cloudflare" echo "" API_TOKEN=$(ask_value "API_TOKEN" "Cloudflare API Token" true) ZONE_ID=$(ask_value "ZONE_ID" "Zone ID") ACCOUNT_ID=$(ask_value "ACCOUNT_ID" "Account ID") EMAIL=$(ask_value "EMAIL" "Email") echo "" echo "💾 Sauvegarde des secrets dans Vault..." vault kv put "$VAULT_PATH" \ api_token="$API_TOKEN" \ zone_id="$ZONE_ID" \ account_id="$ACCOUNT_ID" \ email="$EMAIL" echo "✅ Secrets sauvegardés avec succès!" else echo "ℹ️ Usage:" echo " $0 --interactive # Mode interactif" echo " $0 --verify # Vérifier les secrets" echo " $0 --create-policy # Créer la policy Terraform" echo "" if [ "$1" = "--verify" ] || [ "$1" = "-v" ]; then echo "🔍 Vérification des secrets..." echo "" if vault kv get "$VAULT_PATH" &> /dev/null; then echo "✅ Les secrets existent dans Vault" echo "" echo "Clés présentes:" vault kv get -format=json "$VAULT_PATH" | jq -r '.data.data | keys[]' | sed 's/^/ - /' else echo "❌ Aucun secret trouvé au chemin $VAULT_PATH" echo " Exécutez: $0 --interactive" fi elif [ "$1" = "--create-policy" ] || [ "$1" = "-p" ]; then echo "📋 Création de la policy Terraform..." vault policy write terraform-cloudflare - <