Skip to content

HashiCorp

Ejecutar Terraform con archivos de variables

Script para ejecutar Terraform con archivos de variables:

terraform_with_var_files.sh
function terraform_with_var_files() {
  local dir="$1"
  local action="$2"
  local auto="$3"

  if [[ ! -d "$dir" ]]; then
    echo "El directorio especificado no existe."
    return 1
  fi

  if [[ "$action" != "plan" && "$action" != "apply" && "$action" != "destroy" ]]; then
    echo "Acción no válida. Usa 'plan', 'apply' o 'destroy'."
    return 1
  fi

  local var_files=()
  for file in "$dir"/*.tfvars; do
    if [[ -f "$file" ]]; then
      var_files+=("--var-file $file")
    fi
  done

  if [[ ${#var_files[@]} -eq 0 ]]; then
    echo "No se encontraron archivos .tfvars en el directorio especificado."
    return 1
  fi

  echo "Validando la configuración de Terraform..."
  (cd "$dir" && terraform validate)
  if [[ $? -ne 0 ]]; then
    echo "La validación de Terraform falló."
    return 1
  fi

  local command="terraform $action ${var_files[@]}"

  if [[ "$auto" == "auto" && ( "$action" == "apply" || "$action" == "destroy" ) ]]; then
    command="$command -auto-approve"
  fi

  echo "Ejecutando: $command"
  eval "$command"
}

# Uso de la función
# terraform_with_var_files "/ruta/al/directorio" "plan"
# terraform_with_var_files "/ruta/al/directorio" "apply" "auto"
# terraform_with_var_files "/ruta/al/directorio" "destroy" "auto"

Para cargar la función en tu terminal, copia y pega el script en tu archivo .bashrc, .zshrc o el que toque y recarga tu terminal.

Espero que os sea de utilidad. ¡Saludos!