mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 15:51:26 +00:00
feat(nodes): SSH bootstrap + housekeeping — install script, bundled binaries, auto-prune
- `containr nodes add <user@host>` mints an enroll token, SSHes once,
runs the install script remotely; --print emits the one-liner
- Public /api/agents/install.sh + /api/agents/download/{platform};
agent binaries built into the image under /agents
- Agent-side `prune` (bounded docker system prune, volumes opt-in)
and `system_df` commands
- node_agents.auto_prune + health sweep enqueues daily prune;
offline/online transitions notify admins
- CLI nodes update/prune/commands + MCP tools (prune confirm-gated)
- Usage page: install one-liner, per-node Prune + auto toggle
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
7547375cc2
commit
4848d1f6f0
21 files changed
+884
-32
No files matched your search
@@ -5291,6 +5291,93 @@ paths:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MessageResponse'
|
||||
|
||||
/api/agents/install.sh:
|
||||
servers:
|
||||
- url: http://localhost:8080
|
||||
get:
|
||||
tags:
|
||||
- Agents
|
||||
summary: Agent install script
|
||||
description: Public bootstrap script — `curl | bash -s -- --url <api> --token <enroll-token>`.
|
||||
security: []
|
||||
responses:
|
||||
'200':
|
||||
description: Bourne shell installer
|
||||
content:
|
||||
text/x-sh:
|
||||
schema:
|
||||
type: string
|
||||
|
||||
/api/agents/download/{platform}:
|
||||
servers:
|
||||
- url: http://localhost:8080
|
||||
get:
|
||||
tags:
|
||||
- Agents
|
||||
summary: Download a bundled agent binary
|
||||
description: "platform: linux-amd64 | linux-arm64. Bundled in release images; 404 when absent (install script falls back to GH releases)."
|
||||
security: []
|
||||
parameters:
|
||||
- name: platform
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
enum: [linux-amd64, linux-arm64]
|
||||
responses:
|
||||
'200':
|
||||
description: Agent binary
|
||||
content:
|
||||
application/octet-stream:
|
||||
schema:
|
||||
type: string
|
||||
format: binary
|
||||
'404':
|
||||
description: No bundled binary for platform
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/agents/{id}/prune:
|
||||
post:
|
||||
tags:
|
||||
- Agents
|
||||
summary: Enqueue a bounded docker prune on a node
|
||||
description: Queues a `prune` command — `docker system prune -af`, volumes excluded unless requested.
|
||||
security:
|
||||
- bearerAuth: []
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/AgentIdParam'
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
until:
|
||||
type: string
|
||||
description: Only prune objects older than this duration (e.g. "168h").
|
||||
volumes:
|
||||
type: boolean
|
||||
description: Also prune volumes — destructive, off by default.
|
||||
responses:
|
||||
'202':
|
||||
description: Prune command queued
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
command:
|
||||
$ref: '#/components/schemas/AgentCommand'
|
||||
'404':
|
||||
description: Agent not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/agents/{id}/metrics:
|
||||
get:
|
||||
tags:
|
||||
@@ -8807,6 +8894,9 @@ components:
|
||||
metadata:
|
||||
type: object
|
||||
additionalProperties: true
|
||||
auto_prune:
|
||||
type: boolean
|
||||
description: Enqueue a bounded docker prune on this node once per day.
|
||||
last_heartbeat:
|
||||
type: string
|
||||
format: date-time
|
||||
|
||||
Reference in new issue
Block a user