Open
Description
I have a log-standing target of using OS with declarative and reproducible configuration instead of constantly failing LTS Ubuntu that I have to mess up manually.
(And we're already messing it up much: we have some custom PPAs for GHC, Prosody and dotnet-cli, we have some custom configuration of firewall, we have fail2ban and I don't know whether it works or not, we have VPN server set up and I have no freakin' idea how to manage it all; everything is ad-hoc and undocumented, although I'm trying to keep the copies of the changed configurations in a safe place.)
So, I have the following plan:
- Experiment with a fresh VM conversion.
- Create a new virtual machine on DigitalOcean.
- Set up the same Ubuntu version as we use on the production site.
- Try using something like
nixos-assimilate
ornixos-in-place
on that machine.
- Experiment with our VM backup.
- Make a backup of our current production VM (even if it'll cost me a bit of money).
- Deploy the backup to some staging site.
- Convert that machine on the staging site using
nixos-assimilate
while preserving the existing services (prosody, loglist, ctor, nginx) and documenting the experience (ideally in form of deployable config file).
- Decide whether it's still worth based on the results of 1 and 2.
- Convert the production machine!
- Store the configs somewhere accessible for the ops team members. Probably even in a publish repository (while removing the security and password parts to some private file, for sure).