Canonicalize CMS Authentik bootstrap
This commit is contained in:
parent
ea17e4bb91
commit
88ad0557ad
|
|
@ -67,5 +67,7 @@ Bootstrap Authentik on Synology:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /volume1/docker/dc-cms/source/infra
|
cd /volume1/docker/dc-cms/source/infra
|
||||||
sudo /usr/local/bin/docker compose --env-file .env.synology -f docker-compose.yml exec -T authentik-worker sh -lc 'set -e; export PATH="${VENV_PATH}/bin:${PATH}"; for bp in default/flow-default-authentication-flow.yaml default/flow-default-invalidation-flow.yaml default/flow-default-provider-authorization-implicit-consent.yaml; do /lifecycle/ak apply_blueprint "$bp"; done; /lifecycle/ak shell < /bootstrap/bootstrap-cms.py'
|
sudo env CMS_ENV_FILE=.env.synology sh ./scripts/bootstrap-authentik.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Bootstrap выполняется так же, как в платформе NODE.DC: через `authentik-server ak shell < authentik/bootstrap-cms.py`. Ручной вход в worker, `VENV_PATH` и отдельный `apply_blueprint` не являются штатным сценарием.
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,6 @@ services:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.2}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.2}
|
||||||
command: worker
|
command: worker
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
user: root
|
|
||||||
env_file:
|
env_file:
|
||||||
- ${CMS_SERVICE_ENV_FILE:-.env}
|
- ${CMS_SERVICE_ENV_FILE:-.env}
|
||||||
environment:
|
environment:
|
||||||
|
|
@ -129,7 +128,6 @@ services:
|
||||||
- authentik-data:/data
|
- authentik-data:/data
|
||||||
- authentik-certs:/certs
|
- authentik-certs:/certs
|
||||||
- ./authentik/custom-templates:/templates:ro
|
- ./authentik/custom-templates:/templates:ro
|
||||||
- ./authentik/bootstrap-cms.py:/bootstrap/bootstrap-cms.py:ro
|
|
||||||
networks:
|
networks:
|
||||||
- cms-edge
|
- cms-edge
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,91 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
set -euo pipefail
|
set -eu
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||||
INFRA_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
INFRA_DIR=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||||
|
ROOT_DIR=$(CDPATH= cd -- "$INFRA_DIR/.." && pwd)
|
||||||
|
ENV_FILE="${CMS_ENV_FILE:-$INFRA_DIR/.env}"
|
||||||
|
COMPOSE_FILE="${CMS_COMPOSE_FILE:-$INFRA_DIR/docker-compose.yml}"
|
||||||
|
BOOTSTRAP_SCRIPT="$INFRA_DIR/authentik/bootstrap-cms.py"
|
||||||
|
|
||||||
cd "${INFRA_DIR}"
|
case "$ENV_FILE" in
|
||||||
|
/*) ;;
|
||||||
|
*) ENV_FILE="$INFRA_DIR/$ENV_FILE" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
docker compose --env-file "${CMS_ENV_FILE:-.env}" -f docker-compose.yml exec -T authentik-worker sh -lc '
|
case "$COMPOSE_FILE" in
|
||||||
set -e
|
/*) ;;
|
||||||
export PATH="${VENV_PATH}/bin:${PATH}"
|
*) COMPOSE_FILE="$INFRA_DIR/$COMPOSE_FILE" ;;
|
||||||
for bp in \
|
esac
|
||||||
default/flow-default-authentication-flow.yaml \
|
|
||||||
default/flow-default-invalidation-flow.yaml \
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
default/flow-default-provider-authorization-implicit-consent.yaml
|
echo "Missing $ENV_FILE. Create it from infra/.env.example or infra/.env.synology.example first." >&2
|
||||||
do
|
exit 1
|
||||||
/lifecycle/ak apply_blueprint "$bp"
|
fi
|
||||||
done
|
|
||||||
/lifecycle/ak shell < /bootstrap/bootstrap-cms.py
|
env_value() {
|
||||||
'
|
key="$1"
|
||||||
|
awk -v wanted="$key" '
|
||||||
|
/^[[:space:]]*($|#)/ { next }
|
||||||
|
{
|
||||||
|
line = $0
|
||||||
|
sub(/^[[:space:]]+/, "", line)
|
||||||
|
eq = index(line, "=")
|
||||||
|
if (!eq) { next }
|
||||||
|
key = substr(line, 1, eq - 1)
|
||||||
|
sub(/[[:space:]]+$/, "", key)
|
||||||
|
if (key != wanted) { next }
|
||||||
|
value = substr(line, eq + 1)
|
||||||
|
sub(/^[[:space:]]+/, "", value)
|
||||||
|
sub(/[[:space:]]+$/, "", value)
|
||||||
|
if (value ~ /^".*"$/ || value ~ /^'\''.*'\''$/) {
|
||||||
|
value = substr(value, 2, length(value) - 2)
|
||||||
|
}
|
||||||
|
print value
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
' "$ENV_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
env_default() {
|
||||||
|
value=$(env_value "$1")
|
||||||
|
if [ -n "$value" ]; then
|
||||||
|
printf '%s' "$value"
|
||||||
|
else
|
||||||
|
printf '%s' "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
env_required() {
|
||||||
|
value=$(env_value "$1")
|
||||||
|
if [ -z "$value" ]; then
|
||||||
|
echo "$2" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
printf '%s' "$value"
|
||||||
|
}
|
||||||
|
|
||||||
|
CMS_AUTH_DOMAIN_VALUE=$(env_default CMS_AUTH_DOMAIN cms-auth.local.nodedc)
|
||||||
|
CMS_BOOTSTRAP_ADMIN_EMAIL_VALUE=$(env_default CMS_BOOTSTRAP_ADMIN_EMAIL "")
|
||||||
|
CMS_BOOTSTRAP_ADMIN_PASSWORD_VALUE=$(env_default CMS_BOOTSTRAP_ADMIN_PASSWORD "")
|
||||||
|
CMS_BOOTSTRAP_ADMIN_NAME_VALUE=$(env_default CMS_BOOTSTRAP_ADMIN_NAME "")
|
||||||
|
CMS_BASE_URL_VALUE=$(env_default CMS_BASE_URL http://cms.local.nodedc:8210)
|
||||||
|
CMS_LOGOUT_URI_VALUE=$(env_default CMS_LOGOUT_URI http://cms.local.nodedc:8210/auth/logout)
|
||||||
|
CMS_OIDC_CLIENT_ID_VALUE=$(env_default CMS_OIDC_CLIENT_ID dc-cms)
|
||||||
|
CMS_OIDC_CLIENT_SECRET_VALUE=$(env_required CMS_OIDC_CLIENT_SECRET "CMS_OIDC_CLIENT_SECRET is required")
|
||||||
|
CMS_OIDC_REDIRECT_URI_VALUE=$(env_required CMS_OIDC_REDIRECT_URI "CMS_OIDC_REDIRECT_URI is required")
|
||||||
|
CMS_OIDC_LOGGED_OUT_REDIRECT_URI_VALUE=$(env_default CMS_OIDC_LOGGED_OUT_REDIRECT_URI "")
|
||||||
|
|
||||||
|
cd "$ROOT_DIR"
|
||||||
|
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" exec -T \
|
||||||
|
-e CMS_AUTH_DOMAIN="$CMS_AUTH_DOMAIN_VALUE" \
|
||||||
|
-e CMS_BOOTSTRAP_ADMIN_EMAIL="$CMS_BOOTSTRAP_ADMIN_EMAIL_VALUE" \
|
||||||
|
-e CMS_BOOTSTRAP_ADMIN_PASSWORD="$CMS_BOOTSTRAP_ADMIN_PASSWORD_VALUE" \
|
||||||
|
-e CMS_BOOTSTRAP_ADMIN_NAME="$CMS_BOOTSTRAP_ADMIN_NAME_VALUE" \
|
||||||
|
-e CMS_BASE_URL="$CMS_BASE_URL_VALUE" \
|
||||||
|
-e CMS_LOGOUT_URI="$CMS_LOGOUT_URI_VALUE" \
|
||||||
|
-e CMS_OIDC_CLIENT_ID="$CMS_OIDC_CLIENT_ID_VALUE" \
|
||||||
|
-e CMS_OIDC_CLIENT_SECRET="$CMS_OIDC_CLIENT_SECRET_VALUE" \
|
||||||
|
-e CMS_OIDC_REDIRECT_URI="$CMS_OIDC_REDIRECT_URI_VALUE" \
|
||||||
|
-e CMS_OIDC_LOGGED_OUT_REDIRECT_URI="$CMS_OIDC_LOGGED_OUT_REDIRECT_URI_VALUE" \
|
||||||
|
authentik-server ak shell < "$BOOTSTRAP_SCRIPT"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue