Skip to content
ВозможностиДокументацияЦеныПартнёрыPlaygroundFAQ

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 политиками, таймаутами и поведением при ошибке.

yaml
1# Конфигурация Change Management
2change_management:
3 auto_snapshot: true # Forensic snapshot перед выполнением
4 rollback_on_failure: true # Автоматический rollback при ошибке
5 require_approval:
6 deploy: true # Deploy требует approval
7 config: true # Config требует approval
8 patch: true # Patch требует approval
9 emergency: false # Emergency — skip approval
10 approval:
11 timeout_minutes: 60 # Таймаут ожидания approval
12 min_approvers: 1 # Минимум approver для execution
13 allow_self_approve: false # Создатель не может одобрить
14 execution:
15 command_timeout_seconds: 300 # Таймаут одной команды
16 max_concurrent_changes: 3 # Максимум параллельных changes
17 stop_on_error: true # Остановка при ошибке команды

API Reference

Создание change request

bash
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 }'
json
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

bash
1curl -s "https://api.flowlink.io/v1/changes?status=pending_approval&environment=production&limit=20" \
2 -H "Authorization: Bearer $TOKEN" | jq
json
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": 1
14}

Одобрение / Отклонение

bash
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"}'
6
7# Отклонить
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

bash
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"}'
json
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 изменений

bash
1curl -s "https://api.flowlink.io/v1/changes/ch_abc123/timeline" \
2 -H "Authorization: Bearer $TOKEN" | jq
json
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 request
GET /api/v1/changesСписок change requests (фильтры: status, environment, tags)
GET /api/v1/changes/{id}Детали change request
POST /api/v1/changes/{id}/approveОдобрить (multi-approval)
POST /api/v1/changes/{id}/rejectОтклонить
POST /api/v1/changes/{id}/rollbackВыполнить rollback
GET /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) облегчают фильтрацию и аудит изменений по категориям.

Edit this page