Orquesta Agentes IA que desarrollan por ti
Verificando...
25-environment-drift-detection
Procedimiento: Detecci├│n de Drift entre Entornos
Despliegue
1 plugin(s)
Editor
Preview
Tareas
1
Info
Titulo
Detecta diferencias de configuraci├│n entre entornos (dev, staging, prod). Identifica drift en variables de entorno, versiones, y configuraciones.
Descripcion
Contenido Markdown
8752 caracteres
Guardar
# Procedimiento: Detecci├│n de Drift entre Entornos ## Metadata - **ID**: PROC-25 - **Frecuencia**: Semanal - **Duraci├│n estimada**: 20-30 min - **Requiere**: Acceso a configuraciones de todos los entornos - **Dependencias**: Ninguna - **Bloquea**: Deploys (si hay drift cr├¡tico) - **Agentes**: devops-engineer --- ## Objetivo Detectar diferencias no intencionadas entre entornos: 1. Configuraci├│n de aplicaci├│n (appsettings, .env) 2. Variables de entorno 3. Versiones de dependencias/im├ígenes 4. Infraestructura (si es IaC) 5. Datos de referencia (feature flags, settings BD) --- ## Entornos T├¡picos | Entorno | Prop├│sito | Paridad con Prod | |---------|-----------|------------------| | Development | Desarrollo local | Baja (esperado) | | Staging | Pre-producci├│n | Alta (requerido) | | Production | Producci├│n | Baseline | **El objetivo es que Staging sea lo m├ís parecido posible a Production.** --- ## Checklist Ejecutable ### 1. Comparar Configuraci├│n de Aplicaci├│n #### .NET (appsettings.json) ```bash # Listar keys en cada entorno jq -r 'paths | join(".")' appsettings.json | sort > keys_base.txt jq -r 'paths | join(".")' appsettings.Staging.json | sort > keys_staging.txt jq -r 'paths | join(".")' appsettings.Production.json | sort > keys_prod.txt # Diferencias de estructura (keys) diff keys_staging.txt keys_prod.txt # Keys en Prod pero no en Staging (RIESGO) comm -23 keys_prod.txt keys_staging.txt # Keys en Staging pero no en Prod (posible feature nuevo) comm -13 keys_prod.txt keys_staging.txt ``` - [ ] Estructura de config comparada - [ ] Keys faltantes identificadas #### Node.js (.env files) ```bash # Comparar variables diff <(cat .env.staging | grep -v "^#" | cut -d= -f1 | sort) \ <(cat .env.production | grep -v "^#" | cut -d= -f1 | sort) ``` ### 2. Comparar Connection Strings ```bash # Verificar que connection strings apuntan a entornos correctos # (Sin mostrar passwords) # Staging NO debe apuntar a producci├│n grep -i "connectionstring" appsettings.Staging.json | \ grep -v "staging\|test\|dev" && echo "ÔÜá´©Å POSIBLE CONEXI├ôN A PROD" # Producci├│n debe tener sus propios endpoints grep -i "connectionstring" appsettings.Production.json ``` - [ ] Connection strings verificadas - [ ] No hay cruces entre entornos ### 3. Comparar Feature Flags ```bash # Diferencias en feature flags jq '.FeatureManagement' appsettings.Staging.json > flags_staging.json jq '.FeatureManagement' appsettings.Production.json > flags_prod.json diff flags_staging.json flags_prod.json ``` | Flag | Staging | Production | ┬┐OK? | |------|---------|------------|------| | NewFeature | true | false | Ô£à Rollout en curso | | OldFeature | true | true | ÔÜá´©Å Igual, ┬┐hacer permanente? | | BetaFeature | true | true | ÔØî ┬┐Por qu├® igual? | - [ ] Diferencias de flags documentadas - [ ] Diferencias explicadas ### 4. Comparar Versiones de Im├ígenes Docker ```bash # docker-compose o manifiestos K8s grep -E "image:" docker-compose.staging.yml grep -E "image:" docker-compose.production.yml # Comparar tags diff <(grep "image:" docker-compose.staging.yml | sort) \ <(grep "image:" docker-compose.production.yml | sort) ``` - [ ] Versiones de im├ígenes comparadas - [ ] Staging usa mismas versiones que Prod (o +1 para testing) ### 5. Comparar Variables de Entorno (CI/CD) #### GitLab CI ```bash # Listar variables por entorno curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \ "$GITLAB_URL/api/v4/projects/$PROJECT_ID/variables" | \ jq '.[] | {key, environment_scope}' # Verificar que variables cr├¡ticas existen en ambos ``` #### Azure DevOps ```bash # Variable groups por entorno # Comparar visualmente en portal o exportar ``` - [ ] Variables de entorno comparadas - [ ] Variables faltantes identificadas ### 6. Comparar Infraestructura (IaC) ```bash # Terraform - comparar state o plan terraform plan -var-file=staging.tfvars > plan_staging.txt terraform plan -var-file=production.tfvars > plan_prod.txt # Recursos diferentes diff plan_staging.txt plan_prod.txt | grep -E "^\+|^\-" # Bicep/ARM - comparar par├ímetros diff parameters.staging.json parameters.production.json ``` - [ ] Infraestructura comparada - [ ] Diferencias intencionadas documentadas ### 7. Comparar Datos de Referencia en BD ```sql -- SQL Server / PostgreSQL -- Comparar tablas de configuraci├│n -- Staging SELECT SettingKey, SettingValue FROM AppSettings ORDER BY SettingKey; -- Comparar con Production -- (Exportar ambos y diff) ``` - [ ] Datos de referencia comparados - [ ] Settings sincronizados --- ## Tipos de Drift | Tipo | Severidad | Ejemplo | Acci├│n | |------|-----------|---------|--------| | Estructura | CRITICAL | Key falta en Staging | A├▒adir antes de deploy | | Valor esperado | INFO | API_URL diferente | Verificar que es correcto | | Valor inesperado | WARNING | Misma password | Investigar | | Feature Flag | INFO | Flag diferente | Verificar plan rollout | | Versi├│n imagen | WARNING | Staging desactualizado | Sincronizar | --- ## Output Esperado ``` ====== PROC-25 COMPLETADO [TIMESTAMP] ====== Proyecto: [nombre] Entornos comparados: Staging vs Production CONFIGURACI├ôN (appsettings): - Keys totales Prod: X - Keys totales Staging: Y - Keys solo en Prod: Z [ÔÜá´©Å DRIFT] - Keys solo en Staging: W [feature nuevo] CONNECTION STRINGS: - Verificaci├│n: Ô£à OK / ÔØî Cruces detectados FEATURE FLAGS: | Flag | Stag | Prod | Status | |------|------|------|--------| | NewX | true | false | Ô£à Rollout | IM├üGENES DOCKER: - Staging: api:1.2.3 - Production: api:1.2.3 - Status: Ô£à Sincronizado / ÔÜá´©Å Drift VARIABLES CI/CD: - Solo en Prod: [lista] - Solo en Staging: [lista] DRIFT CR├ìTICO DETECTADO: 1. [descripci├│n] - REQUIERE ACCI├ôN DRIFT ACEPTABLE: 1. [descripci├│n] - Documentado ACCIONES REQUERIDAS: 1. A├▒adir variable X a Staging 2. Sincronizar imagen Y ``` --- ## Criterios de ├ëxito - [ ] 0 drift cr├¡tico (keys faltantes) - [ ] Todas las diferencias documentadas/justificadas - [ ] Connection strings correctos por entorno - [ ] Versiones de im├ígenes sincronizadas --- ## Alertas y Escalaci├│n | Severidad | Condici├│n | Acci├│n | |-----------|-----------|--------| | CRITICAL | Key de config falta en Staging | Bloquear deploy, corregir | | CRITICAL | Connection string cruzada | Corregir inmediatamente | | WARNING | Imagen desactualizada | Sincronizar antes de deploy | | INFO | Drift de feature flag | Verificar plan de rollout | --- ## Automatizaci├│n En ejecuci├│n no-interactiva: 1. Leer configuraciones de todos los entornos 2. Comparar estructuras y valores 3. Clasificar diferencias 4. Generar reporte 5. Alertar si hay drift cr├¡tico --- ## Template de Documento de Drift Aceptado ```markdown # Drift Aceptado: [Nombre] ## Descripci├│n Qu├® diferencia existe entre entornos. ## Justificaci├│n Por qu├® esta diferencia es intencional. ## Responsable @usuario ## Fecha de revisi├│n YYYY-MM-DD (revisar si sigue siendo v├ílido) ``` --- --- ## Output Estructurado (Nexus) Al finalizar, el agente DEBE generar un bloque JSON con el siguiente formato para que Nexus pueda procesarlo automaticamente: ```json { "result": "success", "summary": "Ejecucion de PROC-25 completada. [Descripcion breve de resultados]", "metrics": { "issues_found": 0, "issues_resolved": 0, "ssl_days_left": 45, "endpoints_healthy": 5, "custom": { "procedure_specific_metric": "value" } }, "backlog_items": [ { "title": "Titulo del item de seguimiento", "description": "Descripcion detallada si se requiere accion futura", "priority": "medium", "type": "improvement", "tags": ["proc-25"] } ], "next_steps": [ "Accion recomendada 1", "Accion recomendada 2" ], "warnings": [ "Advertencias encontradas durante la ejecucion" ] } ``` **Campos requeridos:** - `result`: `"success"` | `"partial"` | `"failed"` - `summary`: Resumen ejecutivo en 1-3 lineas **Metricas especificas de este procedure:** - environments_checked, drift_items, drift_percent **Criterios de resultado:** - `success`: Procedimiento completado sin errores criticos - `partial`: Completado con algunos problemas menores o items pendientes - `failed`: Error critico o no se pudo completar ## Historial de Ejecuciones | Fecha | Proyecto | Entornos | Drift Cr├¡tico | Drift Aceptado | Acciones | |-------|----------|----------|---------------|----------------|----------| | | | | | | |
H1
H2
H3
Bold
Italic
Code
Lista
Num
Task
Code Block
Link
Nexus Platform
Reconectando
Recuperando la conexion
Se ha interrumpido la conexion con el servidor. Estamos reconectando automaticamente.
Reconectando...
Manten esta pestana abierta, volvemos enseguida.
No hemos podido reconectar
El servidor puede estar reiniciandose o tu conexion a internet es inestable.
Reintentar
La sesion ha expirado
Recarga la pagina para iniciar una nueva sesion.
Recargar
Si no vuelve en 30 segundos, recarga la pagina.