by eaguyhn on 3/8/20, 1:25 PM with 6 comments
by paxswill on 3/8/20, 8:24 PM
by trashfindhunter on 3/8/20, 5:33 PM
So the process might look like this:
1. Manually update a test system and take note of the packages comprising your application and their new versions ('grep -E "<PATTERN>" --color=always' could be helpful here). 2. Run automated tests against the test build to ensure that new packages have not caused issues. 3. If any breaking changes are discovered, pin the offending packages to their unbroken versions. Rinse and repeat. 4. Once a stable build is found, update your puppet manifests to reflect any pinned packages and run it on a single test system (I use an isolated puppet master test server for this). 5. If all goes well on the test system, update the main puppet master server and wait for the agents to call home (don't forget to update the runinterval directive in puppet.conf so the agents don't call home every 30 minutes - even idempotent processes consume resources).
Further reading:
https://forge.puppet.com/puppetlabs/apt https://wiki.debian.org/AptConfiguration https://help.ubuntu.com/community/PinningHowto
by apple4ever on 3/8/20, 11:48 PM
I’m glad you are taking updates seriously. There are plenty of companies who do not. Like mine, who still has DNS on Ubuntu 12, has a fleet of Ubuntu 14 servers on top of that all running important production services (web, DHCP, MySQL etc), and none which have been updated in 3 years.
by yjftsjthsd-h on 3/8/20, 5:27 PM
Edit: Actually, let me slightly walk that back. The described system is probably a reasonable way to maintain a small number of pets. My objections are mostly based on the idea that you're dealing with more than a handful of servers.