Skip to content
Open
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
15 changes: 15 additions & 0 deletions tenks-network-on-boot.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[Unit]
Description=Runs a script to setup tenks host networking
After=network.target
Wants=network-online.target

[Service]
WorkingDirectory=/home/lab/deployment/src
ExecStart=/bin/tenks-network-setup
Restart=no
User=lab
Group=root
Type=simple

[Install]
WantedBy=multi-user.target
15 changes: 15 additions & 0 deletions tenks-network-setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -euo pipefail

source /home/lab/deployment/venvs/kayobe/bin/activate
source /home/lab/deployment/src/kayobe-config/kayobe-env

cd /home/lab/deployment/src

for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export KAYOBE_CONFIG_SOURCE_PATH=/home/lab/deployment/src/kayobe-config
export KAYOBE_VENV_PATH=/home/lab/deployment/venvs/kayobe
export TENKS_CONFIG_PATH=/home/lab/deployment/src/kayobe-config/tenks.yml
Comment on lines +5 to +13

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This script has a couple of areas for improvement:

  1. Hardcoded Paths: It contains multiple hardcoded paths based on /home/lab/deployment. This makes the script brittle and hard to maintain or reuse in different environments. It's recommended to centralize the base path definition.
  2. Unsetting Variables: The method for unsetting OS_* variables can be made more robust and efficient using modern bash features.

The suggestion below addresses both points by introducing a base path and using parameter expansion to unset variables.

Suggested change
source /home/lab/deployment/venvs/kayobe/bin/activate
source /home/lab/deployment/src/kayobe-config/kayobe-env
cd /home/lab/deployment/src
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export KAYOBE_CONFIG_SOURCE_PATH=/home/lab/deployment/src/kayobe-config
export KAYOBE_VENV_PATH=/home/lab/deployment/venvs/kayobe
export TENKS_CONFIG_PATH=/home/lab/deployment/src/kayobe-config/tenks.yml
# A base path could be set here, or sourced from an environment file.
# e.g. DEPLOYMENT_BASE=${DEPLOYMENT_BASE:-/home/lab/deployment}
DEPLOYMENT_BASE="/home/lab/deployment"
SRC_DIR="$DEPLOYMENT_BASE/src"
VENV_DIR="$DEPLOYMENT_BASE/venvs/kayobe"
KAYOBE_CONFIG_DIR="$SRC_DIR/kayobe-config"
source "$VENV_DIR/bin/activate"
source "$KAYOBE_CONFIG_DIR/kayobe-env"
cd "$SRC_DIR"
# Unset all shell variables and functions starting with OS_
for var in "${!OS_@}"; do
unset "$var"
done
export KAYOBE_CONFIG_SOURCE_PATH="$KAYOBE_CONFIG_DIR"
export KAYOBE_VENV_PATH="$VENV_DIR"
export TENKS_CONFIG_PATH="$KAYOBE_CONFIG_DIR/tenks.yml"


kayobe/dev/tenks-network-reboot-patch.sh ./tenks