update dns on spawn

This commit is contained in:
finn committed 2026-09-21 17:38:52 -07:00
1 parent 3e72ea7e0a
commit 3edf1e4379
1 file changed
+17 -5
+17 -5
View File
@@ -15,6 +15,11 @@ SCRIPT_ACTION=$1
LINODE_LABEL=$2 LINODE_LABEL=$2
LOGFILE="./linodes.log" LOGFILE="./linodes.log"
# Set to "true" by any action that should also refresh the valheim A record.
# The create action sets this so it reuses the DNS update block below instead
# of duplicating the record-updating logic.
UPDATE_A_RECORD="false"
# Pre-existing Valheim volume, attached to every Linode at creation time. # Pre-existing Valheim volume, attached to every Linode at creation time.
# The filesystem (mkfs.ext4) was already created; see voldirections.txt. # The filesystem (mkfs.ext4) was already created; see voldirections.txt.
VOLUME_ID="18073448" VOLUME_ID="18073448"
@@ -40,12 +45,13 @@ if [[ "$SCRIPT_ACTION" == "" || "$SCRIPT_ACTION" == "--help" || "$SCRIPT_ACTION"
echo "Linode helper script: create-linode.sh <action> <label> [args]" echo "Linode helper script: create-linode.sh <action> <label> [args]"
echo "Create: create-linode.sh c <new label>" echo "Create: create-linode.sh c <new label>"
echo " (fixed size: 8GB shared, newest Debian image;" echo " (fixed size: 8GB shared, newest Debian image;"
echo " attaches and mounts volume $VOLUME_NAME)" echo " attaches and mounts volume $VOLUME_NAME;"
echo " also refreshes the valheim A record)"
echo "Destroy: create-linode.sh d <label>" echo "Destroy: create-linode.sh d <label>"
echo "Connect: create-linode.sh x <label>" echo "Connect: create-linode.sh x <label>"
echo " create-linode.sh x <label> get <remote source> <local dest>" echo " create-linode.sh x <label> get <remote source> <local dest>"
echo " create-linode.sh x <label> put <local source> <remote dest>" echo " create-linode.sh x <label> put <local source> <remote dest>"
echo "Update record: create-linode.sh a <label> <subdomain>" echo "Update record: create-linode.sh a <label>"
echo " (updates the existing A record, creates one if missing)" echo " (updates the existing A record, creates one if missing)"
echo "List: create-linode.sh l" echo "List: create-linode.sh l"
echo " (lists all Linodes, no label needed)" echo " (lists all Linodes, no label needed)"
@@ -54,6 +60,10 @@ fi
# Create # Create
if [[ "$SCRIPT_ACTION" == "c" ]]; then if [[ "$SCRIPT_ACTION" == "c" ]]; then
# Creating a Linode also refreshes the valheim A record, reusing the update
# block at the bottom of this script.
UPDATE_A_RECORD="true"
# Fixed size: 8GB shared, newest Debian image # Fixed size: 8GB shared, newest Debian image
INSTANCE_SIZE="g6-standard-4" INSTANCE_SIZE="g6-standard-4"
INSTANCE_IMAGE="linode/debian13" INSTANCE_IMAGE="linode/debian13"
@@ -170,11 +180,13 @@ if [[ "$SCRIPT_ACTION" == "x" ]]; then
fi fi
# Update record # Update record
if [[ "$SCRIPT_ACTION" == "a" ]]; then # Runs for the explicit "a" action, and also after a create because the create
# block above sets UPDATE_A_RECORD="true".
if [[ "$SCRIPT_ACTION" == "a" || "$UPDATE_A_RECORD" == "true" ]]; then
INSTANCE_IP=$(curl -s -H "Authorization: Bearer $LINODE_API_KEY" https://api.linode.com/v4/linode/instances | jq '.data[] | select(.label == "'$LINODE_LABEL'") | .ipv4[]' | sed -e "s/\"//g") INSTANCE_IP=$(curl -s -H "Authorization: Bearer $LINODE_API_KEY" https://api.linode.com/v4/linode/instances | jq '.data[] | select(.label == "'$LINODE_LABEL'") | .ipv4[]' | sed -e "s/\"//g")
NI_SUBDOMAIN=$3 NI_SUBDOMAIN="valheim"
DOMAIN_RECORDS=$(curl -s -H "Authorization: Bearer $LINODE_API_KEY" \ DOMAIN_RECORDS=$(curl -s -H "Authorization: Bearer $LINODE_API_KEY" \
https://api.linode.com/v4/domains/$WHICH_DOMAIN/records) https://api.linode.com/v4/domains/$WHICH_DOMAIN/records)
@@ -195,7 +207,7 @@ if [[ "$SCRIPT_ACTION" == "a" ]]; then
echo "Updating records with ip $INSTANCE_IP..." echo "Updating records with ip $INSTANCE_IP..."
#ni7ne: #update record:
if [[ -n "$RECORD_ID" ]]; then if [[ -n "$RECORD_ID" ]]; then
curl -s -H "Content-Type: application/json" \ curl -s -H "Content-Type: application/json" \
-H "Authorization: Bearer $LINODE_API_KEY" \ -H "Authorization: Bearer $LINODE_API_KEY" \