1 parent
64be99308b
commit
5cba142003
38 files changed
+565
-353
No files matched your search
@@ -2,18 +2,21 @@
|
||||
#MISE description="Запустить пример Go-сервиса: mise run example:up [сервис] [static|dynamic]"
|
||||
set -euo pipefail
|
||||
|
||||
roles=$(terraform -chdir=vault output -json approle_role_ids)
|
||||
service=${1:-$(jq -r 'keys[0]' <<<"$roles")}
|
||||
config=$(echo 'jsonencode(yamldecode(file("config.yaml")))' | terraform console | jq -r .)
|
||||
service=${1:-$(jq -r '[.services // {} | to_entries[] | select((.value.buckets // {} | length) > 0 and (.value.databases // [] | length) > 0) | .key][0] // empty' <<<"$config")}
|
||||
[[ -n "$service" ]] || { echo "в config.yaml нет сервиса с бакетом и базой" >&2; exit 1; }
|
||||
creds=${2:-static}
|
||||
database=$(jq -r --arg s "$service" '.services[$s].databases[0] // empty' <<<"$config")
|
||||
[[ -n "$database" ]] || { echo "у сервиса $service нет базы, пример рассчитан на сервис с базой и бакетом" >&2; exit 1; }
|
||||
compose=(docker compose -f examples/go-service/compose.yml)
|
||||
url=http://127.0.0.1:${EXAMPLE_PORT:-8090}/
|
||||
|
||||
role_id=$(jq -er --arg s "$service" '.[$s]' <<<"$roles") ||
|
||||
role_id=$(terraform -chdir=vault output -json approle_role_ids | jq -er --arg s "$service" '.[$s]') ||
|
||||
{ echo "нет роли AppRole для сервиса $service" >&2; exit 1; }
|
||||
secret_id=$(curl -sS -X POST -H "X-Vault-Token: $VAULT_TOKEN" -d '{"ttl": "5m", "num_uses": 1}' \
|
||||
"$VAULT_ADDR/v1/auth/approle/role/$service/secret-id" | jq -er .data.secret_id)
|
||||
|
||||
export SERVICE_NAME=$service VAULT_ROLE_ID=$role_id VAULT_SECRET_ID=$secret_id POSTGRES_CREDS=$creds
|
||||
export SERVICE_NAME=$service DATABASE_NAME=$database VAULT_ROLE_ID=$role_id VAULT_SECRET_ID=$secret_id POSTGRES_CREDS=$creds
|
||||
INFRA_NETWORK=$(docker compose config --format json | jq -er .networks.infra.name)
|
||||
export INFRA_NETWORK
|
||||
"${compose[@]}" up -d --build --force-recreate --quiet-pull 2>&1 | tail -3
|
||||
|
||||
Reference in new issue
Block a user