Change Management
Управление изменениями: request → approve → execute → rollback — compliance audit trail
Обзор
Change Management обеспечивает структурированный процесс внесения изменений в инфраструктуру через агентов FlowLink. Каждое изменение проходит через фазы: создание request → approval workflow → поэтапное выполнение с автоматическими snapshot'ами → возможность rollback. Полная интеграция с Forensics для истории изменений и compliance отчётов. Поддерживается multi-approval, emergency changes и интеграция с ITSM системами (Jira, ServiceNow).
Типы изменений
deploy, config, patch, rollback, emergency
Все тарифы
Multi-Approval
Несколько approver на один change
Team+
Auto-Snapshot
Forensic snapshot перед выполнением
Team+
ITSM интеграция
Jira, ServiceNow sync
Enterprise
Архитектура и жизненный цикл
Каждое изменение проходит через 6 состояний. Процесс обеспечивает безопасное внесение изменений: перед выполнением создаётся forensic snapshot, команды выполняются последовательно с проверкой exit code, при ошибке возможен автоматический или ручной rollback. Все действия логируются в audit trail для compliance.
# Lifecycle change request
1. Draft:
POST /api/v1/changes → status: draft
2. Pending Approval:
Submit → status: pending_approval
3. Approved / Rejected:
Approver action → status: approved | rejected
4. Executing:
Sequential command execution with exit code check
5. Completed:
All commands succeeded → status: completed
6. Rollback (optional):
Execute rollback_commands in reverse order
draft
Черновик
pending_approval
Ожидает одобрения
approved
Одобрен
executing
Выполняется
completed
Завершён
rejected
Отклонён
Типы изменений
| Тип | Описание | Approval |
|---|---|---|
| deploy | Развёртывание нового кода | Обязательный |
| config | Изменение конфигурации | Обязательный |
| patch | Обновление пакетов/зависимостей | Обязательный |
| rollback | Откат к предыдущей версии | Упрощённый |
| emergency | Экстренное исправление | Skip (по настройке) |
Конфигурация
Настройки Change Management задаются в конфигурации FlowLink. Можно управлять approval политиками, таймаутами и поведением при ошибке.
1# Конфигурация Change Management2change_management:3 auto_snapshot: true # Forensic snapshot перед выполнением4 rollback_on_failure: true # Автоматический rollback при ошибке5 require_approval:6 deploy: true # Deploy требует approval7 config: true # Config требует approval8 patch: true # Patch требует approval9 emergency: false # Emergency — skip approval10 approval:11 timeout_minutes: 60 # Таймаут ожидания approval12 min_approvers: 1 # Минимум approver для execution13 allow_self_approve: false # Создатель не может одобрить14 execution:15 command_timeout_seconds: 300 # Таймаут одной команды16 max_concurrent_changes: 3 # Максимум параллельных changes17 stop_on_error: true # Остановка при ошибке команды
API Reference
Создание change request
1curl -X POST "https://api.flowlink.io/v1/changes" \2 -H "Authorization: Bearer $TOKEN" \3 -H "Content-Type: application/json" \4 -d '{5 "title": "Update nginx SSL certificates",6 "description": "Renew Lets Encrypt certificates and reload nginx",7 "agent_id": "agent-prod-01",8 "environment": "production",9 "change_type": "config",10 "commands": [11 "certbot renew --nginx",12 "nginx -t",13 "systemctl reload nginx"14 ],15 "auto_snapshot": true,16 "rollback_commands": [17 "cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf",18 "systemctl reload nginx"19 ],20 "tags": ["ssl", "nginx", "production"],21 "metadata": {22 "ticket_id": "JIRA-1234",23 "initiated_by": "admin@flowlink.io"24 }25 }'
1{2 "id": "ch_abc123",3 "status": "pending_approval",4 "title": "Update nginx SSL certificates",5 "agent_id": "agent-prod-01",6 "environment": "production",7 "change_type": "config",8 "commands": ["certbot renew --nginx", "nginx -t", "systemctl reload nginx"],9 "rollback_commands": ["cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf"],10 "auto_snapshot": true,11 "tags": ["ssl", "nginx", "production"],12 "metadata": { "ticket_id": "JIRA-1234" },13 "created_at": "2026-01-15T14:00:00Z",14 "created_by": "admin@flowlink.io",15 "approval": {16 "required": true,17 "min_approvers": 1,18 "timeout_at": "2026-01-15T15:00:00Z"19 }20}
Список change requests
1curl -s "https://api.flowlink.io/v1/changes?status=pending_approval&environment=production&limit=20" \2 -H "Authorization: Bearer $TOKEN" | jq
1{2 "changes": [3 {4 "id": "ch_abc123",5 "status": "pending_approval",6 "title": "Update nginx SSL certificates",7 "change_type": "config",8 "environment": "production",9 "agent_id": "agent-prod-01",10 "created_at": "2026-01-15T14:00:00Z"11 }12 ],13 "total": 114}
Одобрение / Отклонение
1# Одобрить2curl -X POST "https://api.flowlink.io/v1/changes/ch_abc123/approve" \3 -H "Authorization: Bearer $TOKEN" \4 -H "Content-Type: application/json" \5 -d '{"approver": "admin", "comment": "Verified rollback plan"}'67# Отклонить8curl -X POST "https://api.flowlink.io/v1/changes/ch_abc123/reject" \9 -H "Authorization: Bearer $TOKEN" \10 -H "Content-Type: application/json" \11 -d '{"reason": "Missing test environment validation"}'
Rollback
1curl -X POST "https://api.flowlink.io/v1/changes/ch_abc123/rollback" \2 -H "Authorization: Bearer $TOKEN" \3 -H "Content-Type: application/json" \4 -d '{"reason": "Post-deploy monitoring detected errors"}'
1{2 "id": "ch_abc123",3 "status": "rolled_back",4 "rollback_executed_at": "2026-01-15T14:15:00Z",5 "rollback_commands_executed": 2,6 "snapshot_before_rollback": "snap_xyz789"7}
Timeline изменений
1curl -s "https://api.flowlink.io/v1/changes/ch_abc123/timeline" \2 -H "Authorization: Bearer $TOKEN" | jq
1{2 "change_id": "ch_abc123",3 "timeline": [4 { "event": "created", "timestamp": "2026-01-15T14:00:00Z", "user": "admin" },5 { "event": "submitted", "timestamp": "2026-01-15T14:01:00Z", "user": "admin" },6 { "event": "approved", "timestamp": "2026-01-15T14:10:00Z", "approver": "lead" },7 { "event": "snapshot_created", "timestamp": "2026-01-15T14:10:01Z", "snapshot_id": "snap_001" },8 { "event": "command_executed", "timestamp": "2026-01-15T14:10:05Z", "command": "certbot renew --nginx", "exit_code": 0 },9 { "event": "command_executed", "timestamp": "2026-01-15T14:10:15Z", "command": "nginx -t", "exit_code": 0 },10 { "event": "command_executed", "timestamp": "2026-01-15T14:10:20Z", "command": "systemctl reload nginx", "exit_code": 0 },11 { "event": "completed", "timestamp": "2026-01-15T14:10:20Z" }12 ]13}
Endpoints
POST /api/v1/changesСоздать change requestGET /api/v1/changesСписок change requests (фильтры: status, environment, tags)GET /api/v1/changes/{id}Детали change requestPOST /api/v1/changes/{id}/approveОдобрить (multi-approval)POST /api/v1/changes/{id}/rejectОтклонитьPOST /api/v1/changes/{id}/rollbackВыполнить rollbackGET /api/v1/changes/{id}/timelineХронология выполненияPOST /api/v1/changes/{id}/cancelОтменить (draft/pending)Устранение неполадок
Change stuck в pending_approval
Проверьте timeout_at. После истечения таймаута change автоматически отклоняется. Увеличьте timeout_minutes в конфигурации или уведомите approver.
Rollback не работает
Убедитесь, что rollback_commands корректны и тестируемы. Auto-snapshot перед выполнением позволяет восстановить состояние через Forensics.
Команда выполняется с ошибкой
Если rollback_on_failure=true, FlowLink автоматически выполнит rollback_commands. Проверьте timeline для деталей ошибки.
Лучшие практики
Всегда предоставляйте rollback_commands
Даже для простых изменений. Rollback plan — это обязательная часть любой change request.
Используйте auto_snapshot
Forensic snapshot перед выполнением обеспечивает точку восстановления. Это бесценно для compliance расследований.
Связывайте с ITSM тикетами
Добавляйте ticket_id в metadata для traceability. Enterprise тариф обеспечивает автоматическую sync с Jira и ServiceNow.
Тестируйте rollback_commands
Выполняйте rollback_commands в staging среде перед созданием change request для production.
Используйте теги для группировки
Теги (ssl, nginx, production) облегчают фильтрацию и аудит изменений по категориям.