Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions custom-objects-quickstart/2_start_netbox.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ echo
cat <<EOF > Dockerfile-Plugins
FROM netboxcommunity/netbox:v4.4.0

RUN uv pip install netboxlabs-netbox-custom-objects
RUN uv pip install netboxlabs-netbox-custom-objects==0.3.1

EOF

cat <<EOF > docker-compose.override.yml
Expand All @@ -47,10 +48,13 @@ services:
SUPERUSER_NAME: "admin"
SUPERUSER_PASSWORD: "admin"
healthcheck:
test: curl -f http://${MY_EXTERNAL_IP}:${NETBOX_PORT}/login/ || exit 1
start_period: 600s
test: curl -f http://127.0.0.1:8080/login/ || exit 1
start_period: 100s
timeout: 3s
interval: 15s
postgres:
ports:
- "5432:5432"
netbox-worker:
image: netbox:v4.4.0-plugins
pull_policy: never
Expand Down
21 changes: 0 additions & 21 deletions netbox-discovery-quickstart/1_set_envvars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,6 @@

ENV_FILE="environment"

# Function to generate random keys
generate_random_key() {
head -c20 </dev/urandom | xxd -p
}

generate_random_base64_key() {
openssl rand -base64 40 | head -c 40
}

# Check if the environment file exists
if [ -f "$ENV_FILE" ]; then
echo "Environment file found. Using existing variables."
Expand All @@ -34,21 +25,13 @@ else
NETBOX_PORT="8000"
DOCKER_SUBNET="172.24.0.0/24"
DOCKER_NETWORK="discovery-quickstart"
DIODE_TO_NETBOX_API_KEY=$(generate_random_key)
NETBOX_TO_DIODE_API_KEY=$(generate_random_key)
DIODE_API_KEY=$(generate_random_key)
INGESTER_TO_RECONCILER_API_KEY=$(generate_random_base64_key)

# Write variables to the environment file
cat <<EOF > "$ENV_FILE"
MY_EXTERNAL_IP=$MY_EXTERNAL_IP
NETBOX_PORT=$NETBOX_PORT
DOCKER_SUBNET=$DOCKER_SUBNET
DOCKER_NETWORK=$DOCKER_NETWORK
DIODE_TO_NETBOX_API_KEY=$DIODE_TO_NETBOX_API_KEY
NETBOX_TO_DIODE_API_KEY=$NETBOX_TO_DIODE_API_KEY
DIODE_API_KEY=$DIODE_API_KEY
INGESTER_TO_RECONCILER_API_KEY=$INGESTER_TO_RECONCILER_API_KEY
EOF
fi

Expand All @@ -64,8 +47,4 @@ echo "External IP: $MY_EXTERNAL_IP"
echo "NetBox will be deployed at: http://$MY_EXTERNAL_IP:$NETBOX_PORT"
echo "Docker subnet: $DOCKER_SUBNET"
echo "Docker network: $DOCKER_NETWORK"
echo "DIODE_TO_NETBOX_API_KEY: $DIODE_TO_NETBOX_API_KEY"
echo "NETBOX_TO_DIODE_API_KEY: $NETBOX_TO_DIODE_API_KEY"
echo "DIODE_API_KEY: $DIODE_API_KEY"
echo "INGESTER_TO_RECONCILER_API_KEY: $INGESTER_TO_RECONCILER_API_KEY"
echo "-----------------------------------"
47 changes: 47 additions & 0 deletions netbox-discovery-quickstart/2_start_diode.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env bash
set -euo pipefail

# Detect OS (macOS vs Linux)
OS_TYPE=$(uname)

# Ensure required environment variables are set
REQUIRED_VARS=("MY_EXTERNAL_IP" "NETBOX_PORT")

for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var:-}" ]; then
echo "Error: Required environment variable '$var' is not set."
exit 1
fi
done

mkdir -p diode
pushd diode

echo
echo "--- Downloading and preparing quickstart script ---"
echo

curl -sSfLo quickstart.sh https://raw.githubusercontent.com/netboxlabs/diode/release/diode-server/docker/scripts/quickstart.sh
chmod +x quickstart.sh

echo
echo "--- Running quickstart script pointing at NetBox at http://${MY_EXTERNAL_IP}:${NETBOX_PORT} ---"
echo

./quickstart.sh "http://${MY_EXTERNAL_IP}:${NETBOX_PORT}"

echo
echo "--- Bringing up Diode ---"
echo

docker compose up -d

echo
echo "--- Setting up netbox-to-diode client secret ---"
echo

echo "To set up NetBox integration, run this command:"
echo "export NETBOX_TO_DIODE_CLIENT_SECRET=\$(jq -r '.[] | select(.client_id == \"netbox-to-diode\") | .client_secret' ./diode/oauth2/client/client-credentials.json)"

# End
popd
112 changes: 0 additions & 112 deletions netbox-discovery-quickstart/2_start_netbox.sh

This file was deleted.

53 changes: 0 additions & 53 deletions netbox-discovery-quickstart/3_start_diode.sh

This file was deleted.

93 changes: 93 additions & 0 deletions netbox-discovery-quickstart/3_start_netbox.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#!/usr/bin/env bash
set -euo pipefail

# Check if all required environment variables are set
REQUIRED_VARS=("MY_EXTERNAL_IP" "NETBOX_PORT" "NETBOX_TO_DIODE_CLIENT_SECRET")

for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var:-}" ]; then
echo "Error: Required environment variable '$var' is not set."
exit 1
fi
done

echo
echo "--- Cloning NetBox Docker ---"
echo

# Clone netbox-docker
git clone --branch 3.3.0 https://github.com/netbox-community/netbox-docker.git
pushd netbox-docker

echo
echo "--- Generating configuration files ---"
echo

cat <<EOF > Dockerfile-Plugins
FROM netboxcommunity/netbox:v4.3.7

RUN uv pip install netboxlabs-diode-netbox-plugin
EOF

cat <<EOF > docker-compose.override.yml
services:
netbox:
image: netbox:v4.3.7-plugins
pull_policy: never
ports:
- "${NETBOX_PORT}:8080"
build:
context: .
dockerfile: Dockerfile-Plugins
environment:
SKIP_SUPERUSER: "false"
SUPERUSER_API_TOKEN: "1234567890"
SUPERUSER_EMAIL: ""
SUPERUSER_NAME: "admin"
SUPERUSER_PASSWORD: "admin"
healthcheck:
test: curl -f http://${MY_EXTERNAL_IP}:${NETBOX_PORT}/login/ || exit 1
start_period: 600s
timeout: 3s
interval: 15s
netbox-worker:
image: netbox:v4.3.7-plugins
pull_policy: never
netbox-housekeeping:
image: netbox:v4.3.7-plugins
pull_policy: never
EOF

# Add the Diode plugin and its configuration to configuration.py
cat <<EOF > configuration/plugins.py
PLUGINS = ["netbox_diode_plugin"]

PLUGINS_CONFIG = {
"netbox_diode_plugin": {
# Diode gRPC target for communication with Diode server
"diode_target_override": "grpc://${MY_EXTERNAL_IP}:8080/diode",
# NetBox username associated with changes applied via plugin
"diode_username": "diode",
# netbox-to-diode client secret from earlier step
"netbox_to_diode_client_secret": "${NETBOX_TO_DIODE_CLIENT_SECRET}"
},
}
EOF

echo
echo "--- Building NetBox ---"
echo

docker compose build --no-cache

echo
echo "--- Starting NetBox Docker ---"
echo

docker compose up -d

# End
popd
echo "You can now access NetBox here: http://${MY_EXTERNAL_IP}:${NETBOX_PORT}"
echo "username: admin"
echo "password: admin"
Loading