This PR implements manual version pinning for agent auto-updates by adding a pin subcommand to the teleport-update command. This command installs, verifies, and locks the Teleport agent version, preventing teleport-update update from changing the version automatically. teleport-update pin takes the same arguments as teleport-update enable, and can be used to bootstrap an agent installation without auto-updates. The pin subcommand can be run with an explicit version (--force-version), but by default it will pin the cluster's recommended version. Unlike enable, the --force-version flag is not hidden for pin. The teleport-update pin subcommand always queries the proxy to determine enterprise/fips status.
This PR also implements automatic version pinning. If teleport-update update fails due to an issue with the new installation (e.g., crashing), the failed version is recorded in status in update.yaml. That version is skipped until the version is successfully installed with pin or enable.
The teleport-update binary will be used to enable, disable, and trigger automatic Teleport agent updates. The new auto-updates system manages a local installation of the cluster-specified version of Teleport stored in /var/lib/teleport/versions.
Realized I forgot to push teleport-update unpin to this branch last night 😅
It's a simple command with no arguments that just sets spec.pinned to false in the config.
This PR implements manual version pinning for agent auto-updates by adding a
pin
subcommand to theteleport-update
command. This command installs, verifies, and locks the Teleport agent version, preventingteleport-update update
from changing the version automatically.teleport-update pin
takes the same arguments asteleport-update enable
, and can be used to bootstrap an agent installation without auto-updates. Thepin
subcommand can be run with an explicit version (--force-version
), but by default it will pin the cluster's recommended version. Unlikeenable
, the--force-version
flag is not hidden forpin
. Theteleport-update pin
subcommand always queries the proxy to determine enterprise/fips status.This PR also implements automatic version pinning. If
teleport-update update
fails due to an issue with the new installation (e.g., crashing), the failed version is recorded instatus
inupdate.yaml
. That version is skipped until the version is successfully installed withpin
orenable
.The
teleport-update
binary will be used to enable, disable, and trigger automatic Teleport agent updates. The new auto-updates system manages a local installation of the cluster-specified version of Teleport stored in/var/lib/teleport/versions
.RFD: https://github.com/gravitational/teleport/pull/47126 Goal (internal): https://github.com/gravitational/cloud/issues/10289
Example: Pinning the version away from a broken installation