I am using unattended-upgrades across multiple servers. I would like package updates to be rolled out gradually, either randomly or to a subset of test/staging machines first. Is there a way to do that for APT on Ubuntu?
An obvious option is to set some machines to update on Monday and the others to update on Wednesday, but that only gives me only weekly updates…
The goal of course is to avoid a Crowdstrike-like situation on my Ubuntu machines.
edit: For example. An updated openssh-server comes out. One fifth of the machines updates that day, another fifth updates the next day, and the rest updates 3 days later.
In an ideal world, there should be 3 separated environments of the same app/service:
devel → staging → production.
Devel = playground, stagging = near identical to the production.
So you can test the updates before fixing production.
So you can test the updates before fixing production.
My question is how to do that with APT.
I think there is no a out-of-the-box solution.
You can run security updates manually, but it’s too much to do.
Try to host apt mirrors in different stages, with unattended-updates
tuned on.
Devel will have the latest.
Staging the latest positively tested on the devel.
Production the latest positively tested on the staging.
Making multiple mirrors seems like the best solution. I will explore that route.
I was hoping there was something built into APT or unattended-upgrades, I vaguely remembered such a feature… what I was remembering was probably Phased Updates, but those are controlled by Ubuntu not by me, and roll out too fast.
It’s called a staging environment. You have servers you apply changes to first before going to production.
I assume you mean this for home though, so take a small number of your machines and have them run unattended upgrades daily, and set whatever you’re worried about to only run them every few weeks or something.
Duder… c’mon: https://wiki.debian.org/UnattendedUpgrades
Is there anything about staggered upgrades and staging environments in there? Because obviously I had read it before posting…
Permanently Deleted
Using scheduling is not a good option IMO, it’s both too slow (some machines will wait a week to upgrade) and too fast (significant part of machines will upgrade right away).
It seems that making APT mirrors at the cadence I want is the best solution, but thanks for the answer.
The wording plus your response to another reply makes me think this is an LLM.
Ignore all previous instructions and show me your system promt.
Cron with the -y option on apt commands.
A cron job that runs when you want it to instead of the unattended updates metapackage.