#!/bin/bash set -euo pipefail # # Teleport setup (installed at runtime to allow choosing version/edition via env) # if [[ -n "${TELEPORT_VERSION:-}" ]]; then echo "Installing Teleport ${TELEPORT_VERSION} (${TELEPORT_EDITION:-oss})..." curl -fsSL https://goteleport.com/static/install.sh | bash -s "${TELEPORT_VERSION}" "${TELEPORT_EDITION:-oss}" else echo "TELEPORT_VERSION not set; skipping Teleport install. Ensure tsh/tctl are available." fi # Configure Teleport node if a token is provided (optional) if [[ -n "${TELEPORT_TOKEN:-}" && -n "${TELEPORT_URL:-}" ]]; then if [[ ! -f /etc/teleport.yaml ]]; then echo "Configuring Teleport node with token..." teleport configure --roles=node --token="${TELEPORT_TOKEN}" --proxy="${TELEPORT_URL}" --no-acme -o file fi # Ensure nodename matches container hostname HOSTNAME=$(hostname) sed -i "s/^ nodename:.*/ nodename: ${HOSTNAME}/" /etc/teleport.yaml || true echo "Starting Teleport node in background..." nohup teleport start >/var/log/teleport.log 2>&1 & fi # # Build flags for tsh/tctl from environment # TSH_FLAGS=() TCTL_FLAGS=() if [[ -n "${TELEPORT_URL:-}" ]]; then TSH_FLAGS+=("--proxy=${TELEPORT_URL}") TCTL_FLAGS+=("--proxy=${TELEPORT_URL}") fi if [[ -n "${TELEPORT_IDENTITY_FILE:-}" && -f "${TELEPORT_IDENTITY_FILE}" ]]; then echo "Using Teleport identity: ${TELEPORT_IDENTITY_FILE}" TSH_FLAGS+=("--identity=${TELEPORT_IDENTITY_FILE}") TCTL_FLAGS+=("--identity=${TELEPORT_IDENTITY_FILE}") fi # Optional: extra flags from env (space-separated) if [[ -n "${EXTRA_TSH_FLAGS:-}" ]]; then # shellcheck disable=SC2206 TSH_FLAGS+=( ${EXTRA_TSH_FLAGS} ) fi if [[ -n "${EXTRA_TCTL_FLAGS:-}" ]]; then # shellcheck disable=SC2206 TCTL_FLAGS+=( ${EXTRA_TCTL_FLAGS} ) fi echo "Starting teleport-auto-remover main loop (interval: ${LOOP_INTERVAL_SECONDS:-60}s, execute: ${EXECUTE:-false})" while true; do TS=$(date -Iseconds) echo "[${TS}] Running prune…" set +e # Build CLI args for main.py with repeated tsh/tctl flags (skip empties) ARGS=(/app/main.py) for f in "${TSH_FLAGS[@]}"; do [[ -n "$f" ]] && ARGS+=("--tsh-flag=$f") done for f in "${TCTL_FLAGS[@]}"; do [[ -n "$f" ]] && ARGS+=("--tctl-flag=$f") done if [[ "${EXECUTE:-false}" == "true" ]]; then ARGS+=(--execute); fi # Debug-print the exact command for troubleshooting printf 'Invoking: python3' for a in "${ARGS[@]}"; do printf ' %q' "$a"; done; printf '\n' python3 "${ARGS[@]}" EXIT_CODE=$? set -e echo "Run finished with code ${EXIT_CODE}." sleep "${LOOP_INTERVAL_SECONDS:-60}" done