From 9ce6c7ad6ed3645a2cbf7802106ebb2aa2387cce Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Thu, 18 Nov 2021 17:14:30 +0100 Subject: [PATCH] Add config files for garage staging cluster --- app/garage-staging/config/garage.toml | 23 ++++ app/garage-staging/deploy/garage.hcl | 108 ++++++++++++++++++ .../secrets/garage-staging/rpc_secret | 1 + 3 files changed, 132 insertions(+) create mode 100644 app/garage-staging/config/garage.toml create mode 100644 app/garage-staging/deploy/garage.hcl create mode 100644 app/garage-staging/secrets/garage-staging/rpc_secret diff --git a/app/garage-staging/config/garage.toml b/app/garage-staging/config/garage.toml new file mode 100644 index 0000000..60f97c5 --- /dev/null +++ b/app/garage-staging/config/garage.toml @@ -0,0 +1,23 @@ +block_size = 1048576 + +metadata_dir = "/meta" +data_dir = "/data" + +replication_mode = "3" + +rpc_bind_addr = "[::]:3991" +rpc_secret = "{{ key "secrets/garage-staging/rpc_secret" | trimSpace }}" + +consul_host = "localhost:8500" +consul_service_name = "garage-staging-rpc-self-advertised" + +bootstrap_peers = [] + +[s3_api] +s3_region = "garage-staging" +api_bind_addr = "[::]:3990" + +[s3_web] +bind_addr = "[::]:3992" +root_domain = ".web-staging.deuxfleurs.fr" +index = "index.html" diff --git a/app/garage-staging/deploy/garage.hcl b/app/garage-staging/deploy/garage.hcl new file mode 100644 index 0000000..db5bae7 --- /dev/null +++ b/app/garage-staging/deploy/garage.hcl @@ -0,0 +1,108 @@ +job "garage-staging" { + type = "system" + region = "neptune" + datacenters = [ "neptune" ] + + priority = 80 + + constraint { + attribute = "${attr.cpu.arch}" + value = "amd64" + } + + group "garage-staging" { + network { + port "s3" { static = 3990 } + port "rpc" { static = 3991 } + port "web" { static = 3992 } + } + + update { + max_parallel = 1 + min_healthy_time = "30s" + healthy_deadline = "5m" + } + + task "server" { + driver = "docker" + + config { + image = "dxflrs/amd64_garage:v0.5-beta1" + command = "/garage" + args = [ "server" ] + network_mode = "host" + volumes = [ + "/mnt/storage/garage-staging/data:/data", + "/mnt/ssd/garage-staging/meta:/meta", + "secrets/garage.toml:/etc/garage.toml", + ] + logging { + type = "journald" + } + } + + template { + data = file("../config/garage.toml") + destination = "secrets/garage.toml" + } + + resources { + memory = 1000 + cpu = 1000 + } + + kill_signal = "SIGINT" + kill_timeout = "20s" + + service { + tags = [ + "garage-staging-api", + "traefik.enable=true", + "traefik.frontend.entryPoints=https,http", + "traefik.frontend.rule=Host:garage-staging.deuxfleurs.fr" + ] + port = 3990 + address_mode = "driver" + name = "garage-staging-api" + check { + type = "tcp" + port = 3990 + address_mode = "driver" + interval = "60s" + timeout = "5s" + check_restart { + limit = 3 + grace = "90s" + ignore_warnings = false + } + } + } + + service { + tags = ["garage-staging-rpc"] + port = 3991 + address_mode = "driver" + name = "garage-staging-rpc" + check { + type = "tcp" + port = 3991 + address_mode = "driver" + interval = "60s" + timeout = "5s" + check_restart { + limit = 3 + grace = "90s" + ignore_warnings = false + } + } + } + + restart { + interval = "30m" + attempts = 10 + delay = "15s" + mode = "delay" + } + } + } +} diff --git a/app/garage-staging/secrets/garage-staging/rpc_secret b/app/garage-staging/secrets/garage-staging/rpc_secret new file mode 100644 index 0000000..d831d53 --- /dev/null +++ b/app/garage-staging/secrets/garage-staging/rpc_secret @@ -0,0 +1 @@ +CMD_ONCE openssl rand -hex 32