Skip to content

Commit 75a35c7

Browse files
author
Pablo Garcia Miranda
committed
Parametrizing deploy-netbox.sh to allower using a customize artifactory instead of public repositories for binaries and helm charts
1 parent c2fdea6 commit 75a35c7

File tree

5 files changed

+63
-11
lines changed

5 files changed

+63
-11
lines changed

kind/deploy-netbox.sh

+20-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ set -e -u -o pipefail
55
# • a local kind cluster (preloading images)
66
# • a virtual cluster using vcluster: https://github.com/loft-sh/vcluster ( used for testing pipeline, loading of images not needed )
77

8-
NETBOX_HELM_CHART="https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta.169/netbox-5.0.0-beta.169.tgz" # default value
8+
# Allow override via environment variable, otherwise fallback to default
9+
NETBOX_HELM_CHART="${NETBOX_HELM_CHART:-https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta.169/netbox-5.0.0-beta.169.tgz}"
910

1011
if [[ $# -lt 3 || $# -gt 4 ]]; then
1112
echo "Usage: $0 <CLUSTER> <VERSION> <NAMESPACE> [--vcluster]"
@@ -42,7 +43,8 @@ if [[ "${VERSION}" == "3.7.8" ]] ;then
4243
"ghcr.io/zalando/postgres-operator:v1.12.2" \
4344
"ghcr.io/zalando/spilo-16:3.2-p3" \
4445
)
45-
NETBOX_HELM_CHART="https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta5/netbox-5.0.0-beta5.tgz"
46+
# Allow override via environment variable, otherwise fallback to default
47+
NETBOX_HELM_CHART="${NETBOX_HELM_CHART:-https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta5/netbox-5.0.0-beta5.tgz}"
4648

4749
# patch load-data.sh
4850
sed 's/netbox-demo-v4.1.sql/netbox-demo-v3.7.sql/g' $(dirname "$0")/load-data-job/load-data.orig.sh > $(dirname "$0")/load-data-job/load-data.sh && chmod +x $(dirname "$0")/load-data-job/load-data.sh
@@ -59,7 +61,8 @@ elif [[ "${VERSION}" == "4.0.11" ]] ;then
5961
"ghcr.io/zalando/postgres-operator:v1.12.2" \
6062
"ghcr.io/zalando/spilo-16:3.2-p3" \
6163
)
62-
NETBOX_HELM_CHART="https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta.84/netbox-5.0.0-beta.84.tgz"
64+
# Allow override via environment variable, otherwise fallback to default
65+
NETBOX_HELM_CHART="${NETBOX_HELM_CHART:-https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta.84/netbox-5.0.0-beta.84.tgz}"
6366

6467
# patch load-data.sh
6568
sed 's/netbox-demo-v4.1.sql/netbox-demo-v4.0.sql/g' $(dirname "$0")/load-data-job/load-data.orig.sh > $(dirname "$0")/load-data-job/load-data.sh && chmod +x $(dirname "$0")/load-data-job/load-data.sh
@@ -98,7 +101,12 @@ fi
98101

99102
# build image for loading local data via NetBox API
100103
cd "$(dirname "$0")/load-data-job"
101-
docker build -t netbox-load-local-data:1.0 --load --no-cache --progress=plain -f ./dockerfile .
104+
docker build -t netbox-load-local-data:1.0 \
105+
--load --no-cache --progress=plain \
106+
--build-arg PYTHON_BASE_IMAGE="${PYTHON_BASE_IMAGE:-python:3.12}" \
107+
--build-arg ARTIFACTORY_PYPI_URL="${ARTIFACTORY_PYPI_URL:-}" \
108+
--build-arg ARTIFACTORY_TRUSTED_HOST="${ARTIFACTORY_TRUSTED_HOST:-}" \
109+
-f ./dockerfile .
102110
cd -
103111

104112
# Load local images into Kind only if not vCluster
@@ -115,13 +123,15 @@ else
115123
fi
116124

117125
# Install Postgres Operator
126+
# Allow override via environment variable, otherwise fallback to default
127+
POSTGRESS_OPERATOR_HELM_CHART="${POSTGRESS_OPERATOR_HELM_CHART:-https://opensource.zalando.com/postgres-operator/charts/postgres-operator/postgres-operator-1.12.2.tgz}"
118128
${HELM} upgrade --install postgres-operator \
119129
--namespace="${NAMESPACE}" \
120130
--create-namespace \
121131
--set podPriorityClassName.create=false \
122132
--set podServiceAccount.name="postgres-pod-${NAMESPACE}" \
123133
--set serviceAccount.name="postgres-operator-${NAMESPACE}" \
124-
https://opensource.zalando.com/postgres-operator/charts/postgres-operator/postgres-operator-1.12.2.tgz
134+
"${POSTGRESS_OPERATOR_HELM_CHART}"
125135

126136
# Deploy the database
127137
${KUBECTL} apply --namespace="${NAMESPACE}" -f "$(dirname "$0")/netbox-db.yaml"
@@ -150,8 +160,11 @@ else
150160
| ${KUBECTL} apply -f -
151161
fi
152162

153-
${KUBECTL} apply -n "${NAMESPACE}" \
154-
-f "$(dirname "$0")/load-data-job.yaml"
163+
JOB_DIR="$(dirname "$0")/job"
164+
165+
cd "$JOB_DIR"
166+
kustomize edit set image ghcr.io/zalando/spilo-16="${SPILO_IMAGE:-ghcr.io/zalando/spilo-16:3.2-p3}"
167+
kustomize build . | ${KUBECTL} apply -n "${NAMESPACE}" -f -
155168

156169
${KUBECTL} wait \
157170
-n "${NAMESPACE}" --for=condition=complete --timeout=600s job/netbox-demo-data-load-job

kind/job/kustomization.yaml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
resources:
2+
- load-data-job.yaml
3+
4+
apiVersion: kustomize.config.k8s.io/v1beta1
5+
kind: Kustomization
6+
images:
7+
- name: ghcr.io/zalando/spilo-16
8+
newName: mobile-docker-virtual.artifactory.swisscom.com/zalando/spilo-16
9+
newTag: 3.2-p3
File renamed without changes.

kind/load-data-job/dockerfile.orig

+24-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,25 @@
1-
FROM python:3.12
1+
ARG PYTHON_BASE_IMAGE=python:3.12
2+
FROM ${PYTHON_BASE_IMAGE}
3+
4+
# Optional Artifactory pip index
5+
ARG ARTIFACTORY_PYPI_URL=""
6+
ARG ARTIFACTORY_TRUSTED_HOST=""
7+
8+
# Set envs so they’re usable in RUN commands
9+
ENV ARTIFACTORY_PYPI_URL=${ARTIFACTORY_PYPI_URL}
10+
ENV ARTIFACTORY_TRUSTED_HOST=${ARTIFACTORY_TRUSTED_HOST}
11+
212
ADD main.py .
3-
RUN pip install -Iv pynetbox==7.4.1
4-
CMD ["python", "./main.py"]
13+
14+
# Conditional pip install using Artifactory if set
15+
RUN if [ -n "$ARTIFACTORY_PYPI_URL" ]; then \
16+
echo "Using Artifactory pip index: $ARTIFACTORY_PYPI_URL"; \
17+
pip install -Iv pynetbox==7.4.1 \
18+
--index-url="$ARTIFACTORY_PYPI_URL" \
19+
--trusted-host="$ARTIFACTORY_TRUSTED_HOST"; \
20+
else \
21+
echo "Using public PyPI"; \
22+
pip install -Iv pynetbox==7.4.1; \
23+
fi
24+
25+
CMD ["python", "./main.py"]

kind/load-data-job/load-data.orig.sh

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
#!/bin/sh
22
set -o errexit
33

4+
# Allow override of demo SQL file URL
5+
NETBOX_SQL_DUMP_URL="${NETBOX_SQL_DUMP_URL:-https://raw.githubusercontent.com/netbox-community/netbox-demo-data/master/sql/netbox-demo-v4.1.sql}"
6+
47
TMP_SQL_FILE=$(mktemp /tmp/netbox-data-dump.XXXXXXX.sql) || exit 1
5-
curl -k https://raw.githubusercontent.com/netbox-community/netbox-demo-data/master/sql/netbox-demo-v4.1.sql > "${TMP_SQL_FILE}"
8+
9+
# Download the SQL dump
10+
curl -k "${NETBOX_SQL_DUMP_URL}" > "${TMP_SQL_FILE}"
11+
12+
# Load it into the database
613
psql "user=netbox host=netbox-db.${NAMESPACE}.svc.cluster.local" netbox -q -f "${TMP_SQL_FILE}"
714
rm "${TMP_SQL_FILE}"
15+
16+
# Load additional local data
817
psql "user=netbox host=netbox-db.${NAMESPACE}.svc.cluster.local" netbox -q -f /load-data-job/local-data-setup.sql

0 commit comments

Comments
 (0)