bottlerocket-os / bottlerocket-os/bottlerocket
Add a setting to delay updates on a Bottlerocket node
- 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
Assessment
This issue has not been assessed yet.