bottlerocket-os / bottlerocket-os/bottlerocket

Add a setting to delay updates on a Bottlerocket node

Open
#4,273 1 comment 1 reaction 0 assignees View on GitHub
status/needs-triage type/enhancement
Dominant language
Rust
Stars
9.7k
Forks
586
Avg merge
1d 11h
Merged PRs (30d)
11

Description

**What I'd like:**
Bottlerocket nodes currently decide for themselves when an update "becomes visible" to the host. This is controlled by a combination of the following factors:
* The update's [wave schedule](https://github.com/bottlerocket-os/bottlerocket-core-kit/tree/develop/sources/updater/waves)
* The node's [update seed](https://bottlerocket.dev/en/os/1.25.x/api/settings/updates/#seed) which determine's its position in the wave schedule
* The node's [ignore-waves](https://bottlerocket.dev/en/os/1.25.x/api/settings/updates/#ignore-waves) setting, which allows the node to op to ignore the wave schedule.

It would be useful if we could add an additional setting to add an arbitrary delay to the update.

As an example, suppose we introduce a new setting:

```
apiclient set settings.updates.delay="48 hours"
```

Instead of using the `settings.updates.seed` value to make the update available exactly when that node's position becomes "ready" in the wave schedule, we would use the relevant wave's start time + the offset dictated by the new value.

We may be able to retrofit this setting into `settings.updates.ignore-waves` so that string values indicate the delay:

```
ignore-waves = "for 1 week"
ignore-waves = "for 3 days"
```

**Any alternatives you've considered:**

This is something that could also be implemented in the update agents (e.g. [brupop](https://github.com/bottlerocket-os/bottlerocket-update-operator/issues/693)). I'm not as inclined to prefer this, since it would only solve the problem for a subset of Bottlerocket users which use in-place updates.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.