Add platform infrastructure configuration
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
readonly ROOT="$(cd -- "$(dirname -- "$BASH_SOURCE")/../.." && pwd -P)"
|
||||
readonly DENY="$ROOT/infrastructure/networking/host-nginx/learn-services-grafana-deny-guard.conf"
|
||||
readonly FULL="$ROOT/infrastructure/networking/host-nginx/learn-services-observability.conf"
|
||||
|
||||
fail() {
|
||||
printf 'FAIL: %s\n' "$*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
[[ -f "$DENY" && ! -L "$DENY" ]] || fail 'deny-guard source is missing'
|
||||
[[ -f "$FULL" && ! -L "$FULL" ]] || fail 'full observability source is missing'
|
||||
|
||||
python3 - "$DENY" "$FULL" <<'PY'
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
deny_path, full_path = map(pathlib.Path, sys.argv[1:])
|
||||
deny = deny_path.read_text()
|
||||
full = full_path.read_text()
|
||||
old = " proxy_pass http://127.0.0.1:1;"
|
||||
new = " proxy_pass http://127.0.0.1:30080;"
|
||||
|
||||
if deny.count(old) != 1:
|
||||
raise SystemExit("FAIL: deny guard does not have one closed Grafana upstream")
|
||||
if deny.count(new) != 4:
|
||||
raise SystemExit("FAIL: deny guard existing service upstream set changed")
|
||||
expected = deny.replace(old, new, 1)
|
||||
if full != expected:
|
||||
raise SystemExit("FAIL: full candidate differs from deny guard outside the Grafana upstream")
|
||||
if full.count(old) != 0 or full.count(new) != 5:
|
||||
raise SystemExit("FAIL: full candidate Grafana upstream is not exact")
|
||||
|
||||
required = (
|
||||
"ssl_reject_handshake on;",
|
||||
"server_name git.learn.hyeonworks.com;",
|
||||
"server_name id.learn.hyeonworks.com;",
|
||||
"server_name storage-admin.learn.hyeonworks.com;",
|
||||
"server_name db-admin.learn.hyeonworks.com;",
|
||||
"server_name grafana.learn.hyeonworks.com;",
|
||||
"location = /metrics {",
|
||||
"allow 192.168.0.0/24;",
|
||||
"allow 100.64.0.0/10;",
|
||||
"deny all;",
|
||||
)
|
||||
for token in required:
|
||||
if token not in full:
|
||||
raise SystemExit(f"FAIL: full candidate lacks {token}")
|
||||
if full.count("location = /metrics {") != 2:
|
||||
raise SystemExit("FAIL: Gitea and Grafana metrics guards are not exact")
|
||||
PY
|
||||
|
||||
printf 'HOST NGINX OBSERVABILITY SOURCE CONTRACT PASS\n'
|
||||
Reference in New Issue
Block a user