mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-20 11:21:49 +00:00
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
// ecs-agent runs inside a Spinifex ECS container instance (a guest VM booted from
|
|
// the ECS-AMI, with containerd baked in). It registers the host with the ECS
|
|
// scheduler through the AWS gateway over TLS+SigV4 (never NATS), heartbeats by
|
|
// re-registering, polls the gateway for task assignments, runs them through
|
|
// containerd, and reports state back over the gateway.
|
|
//
|
|
// Static config (gateway URL, CA, region, cluster, seeded IAM creds, containerd
|
|
// socket) is read from the cloud-init env file /etc/spinifex-ecs/agent.env
|
|
// (KEY=value); real env vars override it. Host identity (account, instance, AZ)
|
|
// comes from IMDS at boot.
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
_ "github.com/mulgadc/bluebottle/pkg/fipsboot"
|
|
)
|
|
|
|
func main() {
|
|
cfg := loadConfig(defaultEnvFile)
|
|
|
|
agent, err := New(cfg)
|
|
if err != nil {
|
|
slog.Error("ecs-agent: startup failed", "err", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
if err := agent.Run(ctx); err != nil {
|
|
slog.Error("ecs-agent: run failed", "err", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|