feat(multi-site): spoke.env.example + CFG_PUBLIC_DOMAIN
A dedicated spoke.env for the join-a-cluster vars (CFG_MASTER_DIRECTORY_URL/ _JOIN_KEY, CFG_SPOKE_NO_INBOUND/_PUBLIC_HOST, CFG_PUBLIC_DOMAIN), split out of setup.env purely for clarity -- setup.env still has every option and keeps working as a single file if that's preferred. setup.sh reads both (setup.env first, spoke.env layered on top so its values win), same first-run-only rule as setup.env already had. Also adds CFG_PUBLIC_DOMAIN (documented in MULTI_SITE_SPEC.md §4 but never actually wired into setup.sh): an inbound spoke/standalone site's own public web domain, independent of CFG_DOMAIN (the shared LDAP identity namespace, which must stay identical across every site). Unset behaves exactly as before -- hostnames derive from CFG_DOMAIN like any standalone install.
This commit is contained in:
@@ -200,6 +200,10 @@ fi
|
||||
# later steps can use it. The authoritative CFG_* for secrets are still
|
||||
# resolved in ensure_config; this is only the hostname override.
|
||||
[[ -f ./setup.env ]] && parse_kv_file ./setup.env
|
||||
# spoke.env (optional, see spoke.env.example): the join-a-cluster vars split
|
||||
# out of setup.env for clarity, layered on top so its values win over any
|
||||
# same-named ones in setup.env. Same first-run-only rule as setup.env below.
|
||||
[[ -f ./spoke.env ]] && parse_kv_file ./spoke.env
|
||||
export CFG_JUMP_HOST
|
||||
CFG_CREATE_ALL_HTTP="${CFG_CREATE_ALL_HTTP:-0}"
|
||||
export CFG_CREATE_ALL_HTTP
|
||||
@@ -467,6 +471,10 @@ BAOEOF
|
||||
info "Reading domain/hosts from ./setup.env ..."
|
||||
parse_kv_file ./setup.env
|
||||
fi
|
||||
if [[ -f ./spoke.env ]]; then
|
||||
info "Reading multi-site join config from ./spoke.env ..."
|
||||
parse_kv_file ./spoke.env
|
||||
fi
|
||||
|
||||
# Bind the CFG_* vars to empty where setup.env / the environment didn't set
|
||||
# them, so the .env migration's `${LDAP_X:-$CFG_X}` defaults below don't trip
|
||||
@@ -540,8 +548,14 @@ BAOEOF
|
||||
[[ -n "$CFG_DOMAIN" ]] \
|
||||
|| die "First run: 'cp setup.env.example setup.env', set CFG_DOMAIN to your domain (e.g. example.com), then re-run ./setup.sh"
|
||||
CFG_BASE_DN="${CFG_BASE_DN:-$(dn_from_domain "$CFG_DOMAIN")}"
|
||||
CFG_SSO_HOST="${CFG_SSO_HOST:-sso.$CFG_DOMAIN}"
|
||||
CFG_PROXY_HOST="${CFG_PROXY_HOST:-proxy.$CFG_DOMAIN}"
|
||||
# CFG_PUBLIC_DOMAIN (MULTI_SITE_SPEC.md §4): an inbound spoke's own public
|
||||
# web domain, independent of CFG_DOMAIN. CFG_DOMAIN is the LDAP identity
|
||||
# namespace and MUST be identical across every site (MMR replicas can't
|
||||
# diverge on base DN) -- CFG_PUBLIC_DOMAIN only changes where the web
|
||||
# hostnames point, never the DN. Unset (the default): behaves exactly as
|
||||
# before, hostnames derive from CFG_DOMAIN like any standalone install.
|
||||
CFG_SSO_HOST="${CFG_SSO_HOST:-sso.${CFG_PUBLIC_DOMAIN:-$CFG_DOMAIN}}"
|
||||
CFG_PROXY_HOST="${CFG_PROXY_HOST:-proxy.${CFG_PUBLIC_DOMAIN:-$CFG_DOMAIN}}"
|
||||
CFG_SITE_NAME="${CFG_SITE_NAME:-local}"
|
||||
# Multi-site identity (site_config.js's `siteSlug`, shown on the Directory's
|
||||
# Multi-Site modal) -- without this it's never set anywhere and every fresh
|
||||
|
||||
Reference in New Issue
Block a user