Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FR: Updating clients remotely #6907

Closed
LunchBoxC opened this issue Jan 7, 2023 · 5 comments
Closed

FR: Updating clients remotely #6907

LunchBoxC opened this issue Jan 7, 2023 · 5 comments
Assignees
Labels
fr Feature request

Comments

@LunchBoxC
Copy link

What are you trying to do?

I'm using Tailscale to connect to clients remotely using remote desktop software.

When an update for the Tailscale software exists I must manually visit these clients to update them as installing the new package over remote desktop disconnects the client and it can't be reconnected to until the setup process is fully completed and the installer exits.

How should we solve this?

It could be solved by the following:

  1. Allow clients to be updates from the admin console

OR

  1. allow for automatic updating of the clients

OR

  1. Change the installer so that it briefly disconnects to do the install and then reconnects all clients before the installer exits as there is no way to click on "Finish" when tailscale is now in the disconnected state and preventing the remote desktop software from making a connection.

What is the impact of not solving this?

Waste of resources driving to clients to update their Tailscale application version.

It also means that clients run on outdated versions for longer.

Anything else?

It would also be great if we could pre-configure the installer and send it out with all options like "run unattended" and with the credentials already installed so the installer would make the connection after the install.

This would make sending it to someone to install a snap, rather than needing to configure it thereafter with novice users that don't understand what to click on.

Again to aid remote connection environments.

@LunchBoxC LunchBoxC added fr Feature request needs-triage labels Jan 7, 2023
@bradfitz
Copy link
Member

bradfitz commented Jan 9, 2023

Much of this is currently underway.

bradfitz added a commit that referenced this issue Jan 21, 2023
Add `tailscale version --json` JSON output mode. This will be used
later for a double-opt-in (per node consent like Tailscale SSH +
control config) to let admins do remote upgrades via `tailscale
update` via a c2n call, which would then need to verify the
cmd/tailscale found on disk for running tailscale update corresponds
to the running tailscaled, refusing if anything looks amiss.

Plus JSON output modes are just nice to have, rather than parsing
unstable/fragile/obscure text formats.

Updates #6995
Updates #6907

Change-Id: I7821ab7fbea4612f4b9b7bdc1be1ad1095aca71b
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 21, 2023
Add `tailscale version --json` JSON output mode. This will be used
later for a double-opt-in (per node consent like Tailscale SSH +
control config) to let admins do remote upgrades via `tailscale
update` via a c2n call, which would then need to verify the
cmd/tailscale found on disk for running tailscale update corresponds
to the running tailscaled, refusing if anything looks amiss.

Plus JSON output modes are just nice to have, rather than parsing
unstable/fragile/obscure text formats.

Updates #6995
Updates #6907

Change-Id: I7821ab7fbea4612f4b9b7bdc1be1ad1095aca71b
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 21, 2023
Add `tailscale version --json` JSON output mode. This will be used
later for a double-opt-in (per node consent like Tailscale SSH +
control config) to let admins do remote upgrades via `tailscale
update` via a c2n call, which would then need to verify the
cmd/tailscale found on disk for running tailscale update corresponds
to the running tailscaled, refusing if anything looks amiss.

Plus JSON output modes are just nice to have, rather than parsing
unstable/fragile/obscure text formats.

Updates #6995
Updates #6907

Change-Id: I7821ab7fbea4612f4b9b7bdc1be1ad1095aca71b
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 21, 2023
Add `tailscale version --json` JSON output mode. This will be used
later for a double-opt-in (per node consent like Tailscale SSH +
control config) to let admins do remote upgrades via `tailscale
update` via a c2n call, which would then need to verify the
cmd/tailscale found on disk for running tailscale update corresponds
to the running tailscaled, refusing if anything looks amiss.

Plus JSON output modes are just nice to have, rather than parsing
unstable/fragile/obscure text formats.

Updates #6995
Updates #6907

Change-Id: I7821ab7fbea4612f4b9b7bdc1be1ad1095aca71b
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 21, 2023
…pport

Updates #6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 23, 2023
…pport

Updates #6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 23, 2023
…pport

Updates #6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 23, 2023
…pport

Updates #6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 23, 2023
…pport

Updates #6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
bradfitz added a commit that referenced this issue Jan 23, 2023
…pport

Updates #6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
coadler pushed a commit to coder/tailscale that referenced this issue Feb 2, 2023
Add `tailscale version --json` JSON output mode. This will be used
later for a double-opt-in (per node consent like Tailscale SSH +
control config) to let admins do remote upgrades via `tailscale
update` via a c2n call, which would then need to verify the
cmd/tailscale found on disk for running tailscale update corresponds
to the running tailscaled, refusing if anything looks amiss.

Plus JSON output modes are just nice to have, rather than parsing
unstable/fragile/obscure text formats.

Updates tailscale#6995
Updates tailscale#6907

Change-Id: I7821ab7fbea4612f4b9b7bdc1be1ad1095aca71b
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
coadler pushed a commit to coder/tailscale that referenced this issue Feb 2, 2023
…pport

Updates tailscale#6907

Change-Id: I85db4f6f831dd5ff7a9ef4bfa25902607e0c1558
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
@SilverBut
Copy link
Contributor

SilverBut commented Mar 3, 2023

Great feature I'm waiting for.

Also, it would be great if the remote updating will failsafe, so that if a server is lockdown (for example, only allowing login from other devices in the tailnet) and client update failed, the old client process can still working.

@DentonGentry
Copy link
Contributor

The initial step in this is tailscale update

awly added a commit that referenced this issue Aug 11, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 11, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 14, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only. The prefs field is wrapped in a struct to allow
for future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 14, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only. The prefs field is wrapped in a struct to allow
for future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 14, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only. The prefs field is wrapped in a struct to allow
for future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 14, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only. The prefs field is wrapped in a struct to allow
for future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 30, 2023
The flag is hidden and a noop for now. Adding propagation to tailscaled
and persistence only. The prefs field is wrapped in a struct to allow
for future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 30, 2023
An optional (for now) request body for POST /update messages to carry
the suggested version. This removes the need from clients to figure out
what the latest available version is.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 31, 2023
An optional (for now) request body for POST /update messages to carry
the suggested version. This removes the need from clients to figure out
what the latest available version is.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 31, 2023
An optional (for now) request body for POST /update messages to carry
the suggested version. This removes the need from clients to figure out
what the latest available version is.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Aug 31, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates #6907
awly added a commit that referenced this issue Sep 1, 2023
Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 1, 2023
Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 7, 2023
Log some progress info to make updates more debuggable. Also, track
whether an active update is already started and return an error if
a concurrent update is attempted.

Some planned future PRs:
* add JSON output to `tailscale update`
* use JSON output from `tailscale update` to provide a more detailed
  status of in-progress update (stage, download progress, etc)

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 8, 2023
Log some progress info to make updates more debuggable. Also, track
whether an active update is already started and return an error if
a concurrent update is attempted.

Some planned future PRs:
* add JSON output to `tailscale update`
* use JSON output from `tailscale update` to provide a more detailed
  status of in-progress update (stage, download progress, etc)

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 8, 2023
Log some progress info to make updates more debuggable. Also, track
whether an active update is already started and return an error if
a concurrent update is attempted.

Some planned future PRs:
* add JSON output to `tailscale update`
* use JSON output from `tailscale update` to provide a more detailed
  status of in-progress update (stage, download progress, etc)

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 8, 2023
Log some progress info to make updates more debuggable. Also, track
whether an active update is already started and return an error if
a concurrent update is attempted.

Some planned future PRs:
* add JSON output to `tailscale update`
* use JSON output from `tailscale update` to provide a more detailed
  status of in-progress update (stage, download progress, etc)

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 8, 2023
Log some progress info to make updates more debuggable. Also, track
whether an active update is already started and return an error if
a concurrent update is attempted.

Some planned future PRs:
* add JSON output to `tailscale update`
* use JSON output from `tailscale update` to provide a more detailed
  status of in-progress update (stage, download progress, etc)

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
awly added a commit that referenced this issue Sep 8, 2023
…#9205)

Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates #6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
@noncombatant
Copy link
Contributor

noncombatant commented Dec 7, 2023

News on this bug: Proposed solution (2) is done; see the Beta release of auto-updates if you haven't already.

Proposed solution (1) is in development now. We cannot provide a guarantee of when it will land, but it is a key part of our plan for taking auto-updates out of Beta, and we are working on it now.

@LunchBoxC
Copy link
Author

Thank you!

@awly awly closed this as completed Jan 24, 2024
alexelisenko pushed a commit to Control-D-Inc/tailscale that referenced this issue Feb 15, 2024
The flags are hidden for now. Adding propagation to tailscaled and
persistence only. The prefs field is wrapped in a struct to allow for
future expansion (like update schedule).

Updates tailscale#6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
Signed-off-by: Alex Paguis <alex@windscribe.com>
alexelisenko pushed a commit to Control-D-Inc/tailscale that referenced this issue Feb 15, 2024
Log some progress info to make updates more debuggable. Also, track
whether an active update is already started and return an error if
a concurrent update is attempted.

Some planned future PRs:
* add JSON output to `tailscale update`
* use JSON output from `tailscale update` to provide a more detailed
  status of in-progress update (stage, download progress, etc)

Updates tailscale#6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
Signed-off-by: Alex Paguis <alex@windscribe.com>
alexelisenko pushed a commit to Control-D-Inc/tailscale that referenced this issue Feb 15, 2024
…tailscale#9205)

Cache the last `ClientVersion` value that was received from coordination
server and pass it in the localapi `/status` response.
When running `tailscale status`, print a message if `RunningAsLatest` is
`false`.

Updates tailscale#6907

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
Signed-off-by: Alex Paguis <alex@windscribe.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fr Feature request
Projects
None yet
Development

No branches or pull requests

6 participants