From d65c299d5ec5dc9b4fe0889bd7b1f5fa96926c13 Mon Sep 17 00:00:00 2001 From: Bram Date: Wed, 22 Oct 2025 22:17:35 +0200 Subject: [PATCH] node container labels --- Dockers/remote-node-container/entrypoint.sh | 78 +++++++++++++++++++++ Dockers/remote-node-container/version | 2 +- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/Dockers/remote-node-container/entrypoint.sh b/Dockers/remote-node-container/entrypoint.sh index bf5a56c..5711235 100644 --- a/Dockers/remote-node-container/entrypoint.sh +++ b/Dockers/remote-node-container/entrypoint.sh @@ -39,6 +39,82 @@ fi # Set default package manager if not provided PACKAGE_MANAGER=${PACKAGE_MANAGER:-npm} +add_teleport_labels() { + if [ -n "$TELEPORT_LABELS" ]; then + echo "Adding Teleport labels from TELEPORT_LABELS environment variable..." + + # Check if ssh_service section exists + if ! grep -q "ssh_service:" "$CONFIG_FILE"; then + echo "Error: ssh_service section not found in teleport.yaml" + return 1 + fi + + # Create a backup + cp "$CONFIG_FILE" "$CONFIG_FILE.backup" + + # Build the new ssh_service section + NEW_SSH_SECTION="ssh_service:" + NEW_SSH_SECTION="$NEW_SSH_SECTION"$'\n'" labels:" + + # Parse TELEPORT_LABELS and add each label + IFS=',' read -ra LABELS <<< "$TELEPORT_LABELS" + for label in "${LABELS[@]}"; do + # Trim whitespace + label=$(echo "$label" | xargs) + + # Check if label contains colon + if [[ "$label" == *":"* ]]; then + key=$(echo "$label" | cut -d':' -f1 | xargs) + value=$(echo "$label" | cut -d':' -f2- | xargs) + + if [ -n "$key" ] && [ -n "$value" ]; then + NEW_SSH_SECTION="$NEW_SSH_SECTION"$'\n'" $key: $value" + echo "Added label: $key = $value" + else + echo "Warning: Invalid label format '$label'. Expected format: key:value" + fi + else + echo "Warning: Label '$label' does not contain colon separator. Expected format: key:value" + fi + done + + NEW_SSH_SECTION="$NEW_SSH_SECTION"$'\n'" enabled: \"yes\"" + + # Replace the ssh_service section + awk -v new_section="$NEW_SSH_SECTION" ' + BEGIN { + in_ssh_service = 0 + section_replaced = 0 + } + /^ssh_service:/ { + in_ssh_service = 1 + if (!section_replaced) { + print new_section + section_replaced = 1 + } + next + } + in_ssh_service && /^[a-zA-Z_][a-zA-Z0-9_]*:/ { + in_ssh_service = 0 + } + in_ssh_service { + next + } + { + print $0 + } + ' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" + + # Replace the original file + mv "$CONFIG_FILE.tmp" "$CONFIG_FILE" + + echo "Teleport labels added successfully" + else + echo "No TELEPORT_LABELS environment variable set, skipping label configuration" + fi +} + + # Optional Teleport setup if [ -n "$TELEPORT_VERSION" ] && [ -n "$TELEPORT_URL" ] && [ -n "$TELEPORT_TOKEN" ]; then echo "Teleport configuration detected. Setting up Teleport..." @@ -66,6 +142,8 @@ if [ -n "$TELEPORT_VERSION" ] && [ -n "$TELEPORT_URL" ] && [ -n "$TELEPORT_TOKEN # Update nodename in teleport config sed -i "s/^ nodename:.*/ nodename: $HOSTNAME/" /etc/teleport.yaml + add_teleport_labels + # Start Teleport in the background echo "Starting Teleport service..." nohup teleport start & diff --git a/Dockers/remote-node-container/version b/Dockers/remote-node-container/version index 06a4457..389f774 100644 --- a/Dockers/remote-node-container/version +++ b/Dockers/remote-node-container/version @@ -1 +1 @@ -3.1 \ No newline at end of file +4.0 \ No newline at end of file