@@ -32,6 +32,7 @@ GC_PG_PASS="exordos_core"
3232GC_PG_DB=" exordos_core"
3333
3434SYSTEMD_SERVICE_DIR=/etc/systemd/system/
35+ IAM_CACHE_GO_VERSION=" 1.23.12"
3536
3637DEV_SDK_PATH=" /opt/gcl_sdk"
3738SDK_DEV_MODE=$( [ -d " $DEV_SDK_PATH " ] && echo " true" || echo " false" )
@@ -141,12 +142,73 @@ sudo systemctl enable nginx
141142# Install exordos core
142143sudo mkdir -p $GC_CFG_DIR
143144sudo cp " $GC_PATH /etc/exordos_core/logging.yaml" $GC_CFG_DIR /
145+ sudo install \
146+ -o root \
147+ -g root \
148+ -m 0644 \
149+ " $GC_PATH /etc/exordos_core/iam_cache.json.example" \
150+ " $GC_CFG_DIR /iam_cache.json"
144151# Drop-in config dir loaded by ec-user-api via --config-dir. The notification
145152# element lands its [events] override and event_type_mapping.yaml here; must
146153# exist (oslo --config-dir errors on a missing directory).
147154sudo mkdir -p $GC_CFG_DIR /exordos_core.d
148155sudo cp " $GC_PATH /exordos/images/bootstrap.sh" $BOOTSTRAP_PATH /0100-ec-bootstrap.sh
149156
157+ # Build the IAM cache with a temporary Go toolchain. Only the stripped static
158+ # binary is installed into the image; the toolchain and every build cache are
159+ # removed both after a successful build and if the build fails.
160+ case " $( dpkg --print-architecture) " in
161+ amd64)
162+ IAM_CACHE_GO_ARCH=" amd64"
163+ IAM_CACHE_GO_SHA256=" d3847fef834e9db11bf64e3fb34db9c04db14e068eeb064f49af747010454f90"
164+ ;;
165+ arm64)
166+ IAM_CACHE_GO_ARCH=" arm64"
167+ IAM_CACHE_GO_SHA256=" 52ce172f96e21da53b1ae9079808560d49b02ac86cecfa457217597f9bc28ab3"
168+ ;;
169+ * )
170+ echo " Unsupported architecture for the IAM cache: $( dpkg --print-architecture) " >&2
171+ exit 1
172+ ;;
173+ esac
174+
175+ IAM_CACHE_BUILD_DIR=$( mktemp -d)
176+ cleanup_iam_cache_build () {
177+ if [[ -n " ${IAM_CACHE_BUILD_DIR:- } " && -d " $IAM_CACHE_BUILD_DIR " ]]; then
178+ rm -rf -- " $IAM_CACHE_BUILD_DIR "
179+ fi
180+ }
181+ trap cleanup_iam_cache_build EXIT
182+
183+ curl -fsSLo " $IAM_CACHE_BUILD_DIR /go.tar.gz" \
184+ " https://go.dev/dl/go${IAM_CACHE_GO_VERSION} .linux-${IAM_CACHE_GO_ARCH} .tar.gz"
185+ echo " $IAM_CACHE_GO_SHA256 $IAM_CACHE_BUILD_DIR /go.tar.gz" \
186+ | sha256sum --check -
187+ tar -xzf " $IAM_CACHE_BUILD_DIR /go.tar.gz" -C " $IAM_CACHE_BUILD_DIR "
188+
189+ (
190+ cd " $GC_PATH /services/iam-cache"
191+ CGO_ENABLED=0 \
192+ GOCACHE=" $IAM_CACHE_BUILD_DIR /go-cache" \
193+ GOPATH=" $IAM_CACHE_BUILD_DIR /gopath" \
194+ " $IAM_CACHE_BUILD_DIR /go/bin/go" build \
195+ -buildvcs=false \
196+ -trimpath \
197+ -ldflags=" -s -w" \
198+ -o " $IAM_CACHE_BUILD_DIR /exordos-iam-cache" \
199+ ./cmd/exordos-iam-cache
200+ )
201+ sudo install \
202+ -o root \
203+ -g root \
204+ -m 0755 \
205+ " $IAM_CACHE_BUILD_DIR /exordos-iam-cache" \
206+ /usr/bin/exordos-iam-cache
207+
208+ cleanup_iam_cache_build
209+ trap - EXIT
210+ unset IAM_CACHE_BUILD_DIR
211+
150212cd " $GC_PATH "
151213uv sync
152214source " $GC_PATH " /.venv/bin/activate
@@ -206,6 +268,7 @@ sudo cp "$GC_PATH/etc/systemd/ec-core-agent.service" $SYSTEMD_SERVICE_DIR
206268sudo cp " $GC_PATH /etc/systemd/exordos-universal-agent.service" $SYSTEMD_SERVICE_DIR
207269sudo cp " $GC_PATH /etc/systemd/exordos-universal-scheduler.service" $SYSTEMD_SERVICE_DIR
208270sudo cp " $GC_PATH /etc/systemd/exordos-repo-proxy-gservice.service" $SYSTEMD_SERVICE_DIR
271+ sudo cp " $GC_PATH /etc/systemd/exordos-iam-cache.service" $SYSTEMD_SERVICE_DIR
209272
210273# Prepare DNSaaS
211274sudo systemctl disable --now pdns dnsdist@public dnsdist@private
0 commit comments