pipeline {
    agent any

    environment {
        TERRAFORM_HOME = tool 'Terraform' // Define la herramienta Terraform como una variable de entorno
        PROJECT_DIR = 'ruta_del_proyecto'
        CLOUDGURU_API_KEY = credentials('cloudguru-api-key') // Almacena la clave de la API de CloudGuru en Jenkins Credentials
    }

    stages {
        stage('Clonar Repositorio') {
            steps {
                checkout scm
            }
        }

        stage('Configurar Infraestructura con Terraform') {
            steps {
                script {
                    sh "${TERRAFORM_HOME}/terraform init ${PROJECT_DIR}"
                    sh "${TERRAFORM_HOME}/terraform apply -auto-approve ${PROJECT_DIR}"
                }
            }
        }

        stage('Desplegar Laboratorio') {
            steps {
                script {
                    // Llamadas a la API de CloudGuru para configurar el laboratorio
                    withCredentials([string(credentialsId: 'cloudguru-api-key', variable: 'CLOUDGURU_API_KEY')]) {
                        sh "curl -X POST -H 'Authorization: Bearer ${CLOUDGURU_API_KEY}' https://api.cloudguru.com/labs/deploy"
                    }
                }
            }
        }
    }

    post {
        success {
            echo 'Pipeline ejecutado exitosamente.'
        }
        failure {
            echo 'Error en la ejecución del pipeline.'
        }
    }
}
