Host-Agent Installation (agent/)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016h8oztcj2AdAUDyAKeXf6W
This commit is contained in:
@@ -0,0 +1,38 @@
|
|||||||
|
# Host-Agent fuer weitere Standorte (ADR GC-030, Stufe 1: nur lesende Telemetrie).
|
||||||
|
# Eigenes Compose-Projekt, beruehrt nichts anderes auf dem Server.
|
||||||
|
# Der Agent baut die Verbindung zum Hub selbst auf (ausgehend); es werden keine Ports geoeffnet.
|
||||||
|
# Docker-Zugriff nur ueber einen Socket-Proxy mit ausschliesslich lesendem CONTAINERS-Endpunkt.
|
||||||
|
name: ${GC_PROJECT:-gc-agent}
|
||||||
|
services:
|
||||||
|
socket-proxy:
|
||||||
|
image: tecnativa/docker-socket-proxy:0.2.0
|
||||||
|
container_name: ${GC_PROJECT:-gc-agent}-socket-proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
CONTAINERS: "1"
|
||||||
|
POST: "0"
|
||||||
|
INFO: "0"
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
networks: [agent]
|
||||||
|
agent:
|
||||||
|
image: git1.mrmoe.de/mscadm/gc-hostagent:latest
|
||||||
|
container_name: ${GC_PROJECT:-gc-agent}
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on: [socket-proxy]
|
||||||
|
environment:
|
||||||
|
GC_HUB_URL: "${GC_HUB_URL:?GC_HUB_URL setzen}"
|
||||||
|
GC_AGENT_TOKEN: "${GC_AGENT_TOKEN:-}"
|
||||||
|
GC_AGENT_ALLOW_PLAIN: "${GC_AGENT_ALLOW_PLAIN:-0}"
|
||||||
|
GC_DOCKER_URL: "http://socket-proxy:2375"
|
||||||
|
GC_AGENT_DATA: "/data"
|
||||||
|
volumes:
|
||||||
|
- agent-data:/data
|
||||||
|
read_only: true
|
||||||
|
cap_drop: [ALL]
|
||||||
|
security_opt: ["no-new-privileges:true"]
|
||||||
|
networks: [agent]
|
||||||
|
networks:
|
||||||
|
agent:
|
||||||
|
volumes:
|
||||||
|
agent-data:
|
||||||
Executable
+21
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Host-Agent an einem weiteren Standort installieren (ein Aufruf, idempotent).
|
||||||
|
# GC_HUB_URL=https://dashboard.beispiel.de GC_AGENT_TOKEN=<Einmal-Token aus dem Dashboard> sh join-agent.sh
|
||||||
|
# Das Token gilt 15 Minuten und nur einmal; danach nutzt der Agent seinen eigenen Schluessel (Volume).
|
||||||
|
# Projekt: gc-agent (GC_PROJECT aenderbar). Beruehrt keine anderen Container, Netze oder Systemeinstellungen.
|
||||||
|
set -eu
|
||||||
|
: "${GC_HUB_URL:?GC_HUB_URL setzen}"
|
||||||
|
P="${GC_PROJECT:-gc-agent}"
|
||||||
|
D="${GC_DIR:-$HOME/$P}"
|
||||||
|
mkdir -p "$D" && cd "$D"
|
||||||
|
curl -fsSL https://git1.mrmoe.de/mscadm/ground-control-install/raw/branch/main/agent/docker-compose.yml -o docker-compose.yml
|
||||||
|
umask 077
|
||||||
|
printf 'GC_PROJECT=%s\nGC_HUB_URL=%s\nGC_AGENT_TOKEN=%s\nGC_AGENT_ALLOW_PLAIN=%s\n' "$P" "$GC_HUB_URL" "${GC_AGENT_TOKEN:-}" "${GC_AGENT_ALLOW_PLAIN:-0}" > .env
|
||||||
|
export DOCKER_CONFIG="$D/.docker"; mkdir -p "$DOCKER_CONFIG"
|
||||||
|
docker compose pull -q
|
||||||
|
docker compose up -d
|
||||||
|
# Das Token wird nach der Anmeldung nicht mehr benoetigt und aus der Konfiguration entfernt.
|
||||||
|
sleep 8
|
||||||
|
sed -i 's/^GC_AGENT_TOKEN=.*/GC_AGENT_TOKEN=/' .env
|
||||||
|
docker compose logs --tail 5 agent
|
||||||
|
echo "Fertig: Der Standort erscheint im Dashboard unter Standorte."
|
||||||
Reference in New Issue
Block a user