Skip to content

Commit d2a5fbc

Browse files
authored
Merge pull request #37 from mrmrcoleman/develop
Updated NetBox and Diode start scripts to be compatible with MacOS
2 parents 5a72f3e + f12b2b1 commit d2a5fbc

File tree

2 files changed

+38
-30
lines changed

2 files changed

+38
-30
lines changed

netbox-discovery-quickstart/2_start_netbox.sh

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
set -euo pipefail
33

44
# Check if all required environment variables are set
@@ -7,7 +7,7 @@ REQUIRED_VARS=("MY_EXTERNAL_IP" "NETBOX_PORT" "DIODE_TO_NETBOX_API_KEY" "NETBOX_
77
for var in "${REQUIRED_VARS[@]}"; do
88
if [ -z "${!var:-}" ]; then
99
echo "Error: Required environment variable '$var' is not set."
10-
exit 0
10+
exit 1
1111
fi
1212
done
1313

@@ -32,7 +32,7 @@ cat <<EOF > Dockerfile-Plugins
3232
FROM netboxcommunity/netbox:v4.1-3.0.2
3333
3434
COPY ./plugin_requirements.txt /opt/netbox/
35-
RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /opt/netbox/plugin_requirements.txt
35+
RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /opt/netbox/plugin_requirements.txt
3636
EOF
3737

3838
cat <<EOF > docker-compose.override.yml
@@ -41,7 +41,7 @@ services:
4141
image: netbox:v4.1-3.0.2-plugins
4242
pull_policy: never
4343
ports:
44-
- "${NETBOX_PORT}:8080"
44+
- "\${NETBOX_PORT}:8080"
4545
build:
4646
context: .
4747
dockerfile: Dockerfile-Plugins
@@ -51,12 +51,12 @@ services:
5151
SUPERUSER_EMAIL: ""
5252
SUPERUSER_NAME: "admin"
5353
SUPERUSER_PASSWORD: "admin"
54-
DIODE_TO_NETBOX_API_KEY: ${DIODE_TO_NETBOX_API_KEY}
55-
NETBOX_TO_DIODE_API_KEY: ${NETBOX_TO_DIODE_API_KEY}
56-
DIODE_API_KEY: ${DIODE_API_KEY}
57-
#INGESTER_TO_RECONCILER_API_KEY: ${INGESTER_TO_RECONCILER_API_KEY}
54+
DIODE_TO_NETBOX_API_KEY: "\${DIODE_TO_NETBOX_API_KEY}"
55+
NETBOX_TO_DIODE_API_KEY: "\${NETBOX_TO_DIODE_API_KEY}"
56+
DIODE_API_KEY: "\${DIODE_API_KEY}"
57+
#INGESTER_TO_RECONCILER_API_KEY: "\${INGESTER_TO_RECONCILER_API_KEY}"
5858
healthcheck:
59-
test: curl -f http://${MY_EXTERNAL_IP}:${NETBOX_PORT}/login/ || exit 1
59+
test: curl -f http://\${MY_EXTERNAL_IP}:\${NETBOX_PORT}/login/ || exit 1
6060
start_period: 600s
6161
timeout: 3s
6262
interval: 15s
@@ -74,26 +74,24 @@ PLUGINS = ["netbox_diode_plugin"]
7474
7575
PLUGINS_CONFIG = {
7676
"netbox_diode_plugin": {
77-
# Auto-provision users for Diode plugin
7877
"auto_provision_users": False,
79-
80-
# Diode gRPC target for communication with Diode server
8178
"diode_target_override": "grpc://${MY_EXTERNAL_IP}:8080/diode",
82-
83-
# User allowed for Diode to NetBox communication
8479
"diode_to_netbox_username": "diode-to-netbox",
85-
86-
# User allowed for NetBox to Diode communication
8780
"netbox_to_diode_username": "netbox-to-diode",
88-
89-
# User allowed for data ingestion
9081
"diode_username": "diode-ingestion",
9182
},
9283
}
9384
EOF
9485

95-
# Update the healthcheck in docker-compose.yml
96-
sed -i 's|http://localhost:8080/login/|http://${MY_EXTERNAL_IP}:${NETBOX_PORT}/login/|' docker-compose.yml
86+
# Detect OS and apply sed command accordingly
87+
OS_TYPE=$(uname)
88+
if [[ "$OS_TYPE" == "Darwin" ]]; then
89+
# macOS (requires '' for in-place edit)
90+
sed -i '' "s|http://localhost:8080/login/|http://${MY_EXTERNAL_IP}:${NETBOX_PORT}/login/|" docker-compose.yml
91+
else
92+
# Linux
93+
sed -i "s|http://localhost:8080/login/|http://${MY_EXTERNAL_IP}:${NETBOX_PORT}/login/|" docker-compose.yml
94+
fi
9795

9896
echo
9997
echo "--- Building NetBox ---"

netbox-discovery-quickstart/3_start_diode.sh

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
set -euo pipefail
33

4-
# Check if all required environment variables are set
5-
REQUIRED_VARS=("MY_EXTERNAL_IP" "NETBOX_PORT")
4+
# Detect OS (macOS vs Linux)
5+
OS_TYPE=$(uname)
6+
7+
# Ensure required environment variables are set
8+
REQUIRED_VARS=("MY_EXTERNAL_IP" "NETBOX_PORT" "DIODE_TO_NETBOX_API_KEY" "DIODE_API_KEY" "NETBOX_TO_DIODE_API_KEY" "INGESTER_TO_RECONCILER_API_KEY")
69

710
for var in "${REQUIRED_VARS[@]}"; do
811
if [ -z "${!var:-}" ]; then
912
echo "Error: Required environment variable '$var' is not set."
10-
exit 0
13+
exit 1
1114
fi
1215
done
1316

14-
mkdir diode
17+
mkdir -p diode
1518
pushd diode
1619

1720
echo
@@ -25,11 +28,18 @@ echo
2528
echo "--- Updating Diode .env file ---"
2629
echo
2730

28-
sed -i "s|\(NETBOX_DIODE_PLUGIN_API_BASE_URL=http://\).*|\1${MY_EXTERNAL_IP}:${NETBOX_PORT}/api/plugins/diode|" .env
29-
sed -i "s|^\(DIODE_TO_NETBOX_API_KEY=\).*|\1${DIODE_TO_NETBOX_API_KEY}|" .env
30-
sed -i "s|^\(DIODE_API_KEY=\).*|\1${DIODE_API_KEY}|" .env
31-
sed -i "s|^\(NETBOX_TO_DIODE_API_KEY=\).*|\1${NETBOX_TO_DIODE_API_KEY}|" .env
32-
sed -i "s|^\(INGESTER_TO_RECONCILER_API_KEY=\).*|\1${INGESTER_TO_RECONCILER_API_KEY}|" .env
31+
# Set correct sed syntax based on OS
32+
if [[ "$OS_TYPE" == "Darwin" ]]; then
33+
SED_CMD="sed -i ''"
34+
else
35+
SED_CMD="sed -i"
36+
fi
37+
38+
$SED_CMD "s|\(NETBOX_DIODE_PLUGIN_API_BASE_URL=http://\).*|\1${MY_EXTERNAL_IP}:${NETBOX_PORT}/api/plugins/diode|" .env
39+
$SED_CMD "s|^\(DIODE_TO_NETBOX_API_KEY=\).*|\1${DIODE_TO_NETBOX_API_KEY}|" .env
40+
$SED_CMD "s|^\(DIODE_API_KEY=\).*|\1${DIODE_API_KEY}|" .env
41+
$SED_CMD "s|^\(NETBOX_TO_DIODE_API_KEY=\).*|\1${NETBOX_TO_DIODE_API_KEY}|" .env
42+
$SED_CMD "s|^\(INGESTER_TO_RECONCILER_API_KEY=\).*|\1${INGESTER_TO_RECONCILER_API_KEY}|" .env
3343

3444
cat .env
3545

0 commit comments

Comments
 (0)