Some checks failed
Veza CI / Rust (Stream Server) (push) Successful in 5m21s
Security Scan / Secret Scanning (gitleaks) (push) Failing after 54s
Veza CI / Backend (Go) (push) Failing after 8m27s
Veza CI / Notify on failure (push) Successful in 6s
E2E Playwright / e2e (full) (push) Failing after 12m42s
Veza CI / Frontend (Web) (push) Successful in 15m49s
Four-node distributed MinIO cluster, single erasure set EC:2, tolerates 2 simultaneous node losses. 50% storage efficiency. Pinned to RELEASE.2025-09-07T16-13-09Z to match docker-compose so dev/prod parity is preserved. - infra/ansible/roles/minio_distributed/ : install pinned binary, systemd unit pointed at MINIO_VOLUMES with bracket-expansion form, EC:2 forced via MINIO_STORAGE_CLASS_STANDARD. Vault assertion blocks shipping placeholder credentials to staging/prod. - bucket init : creates veza-prod-tracks, enables versioning, applies lifecycle.json (30d noncurrent expiry + 7d abort-multipart). Cold-tier transition ready but inert until minio_remote_tier_name is set. - infra/ansible/playbooks/minio_distributed.yml : provisions the 4 containers, applies common baseline + role. - infra/ansible/inventory/lab.yml : new minio_nodes group. - infra/ansible/tests/test_minio_resilience.sh : kill 2 nodes, verify EC:2 reconstruction (read OK + checksum matches), restart, wait for self-heal. - scripts/minio-migrate-from-single.sh : mc mirror --preserve from the single-node bucket to the new cluster, count-verifies, prints rollout next-steps. - config/prometheus/alert_rules.yml : MinIODriveOffline (warn) + MinIONodesUnreachable (page) — page fires at >= 2 nodes unreachable because that's the redundancy ceiling for EC:2. - docs/ENV_VARIABLES.md §12 : MinIO migration cross-ref. Acceptance (Day 12) : EC:2 survives 2 concurrent kills + self-heals. Lab apply pending. No backend code change — interface stays AWS S3. W3 progress : Redis Sentinel ✓ (Day 11), MinIO distribué ✓ (this), CDN ⏳ Day 13, DMCA ⏳ Day 14, embed ⏳ Day 15. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
693 B
Django/Jinja
29 lines
693 B
Django/Jinja
{
|
|
"Rules": [
|
|
{
|
|
"ID": "expire-noncurrent-versions",
|
|
"Status": "Enabled",
|
|
"Filter": {},
|
|
"NoncurrentVersionExpiration": {
|
|
"NoncurrentDays": {{ minio_noncurrent_version_expiry_days }}
|
|
}
|
|
},
|
|
{
|
|
"ID": "abort-multipart-uploads",
|
|
"Status": "Enabled",
|
|
"Filter": {},
|
|
"AbortIncompleteMultipartUpload": {
|
|
"DaysAfterInitiation": 7
|
|
}
|
|
}{% if minio_remote_tier_name %},
|
|
{
|
|
"ID": "transition-cold-tier",
|
|
"Status": "Enabled",
|
|
"Filter": {},
|
|
"Transition": {
|
|
"Days": {{ minio_cold_tier_after_days }},
|
|
"StorageClass": "{{ minio_remote_tier_name }}"
|
|
}
|
|
}{% endif %}
|
|
]
|
|
}
|