We develop an appliance at work that gets delivered to low to inexistant internet locations. When updating our software, we have the full stack of technologies to ensure server is up to date such as puppet and even apt-offline.
We didn't have apt-offline installed at first and found out about it later, luckily, it was a small download to install it which was ok for most of our appliances. All of them so far have low internet (56k to 256k internet) so the 1.8mb download took some time but we got it to work.
Now that we either have the original signature of the machine because we were able to generate one at a distance or using a default signature that we created from the same USB installation key, we are able to generate a package of updates for those machines and send it over with the USB update disk for our appliance.
The problem i have is that Puppet also has packages to install. We made a list of packages that it needs to install but realized too late that apt-offline generates the signature on the offline machine with that list using --install-packages.
- Using a ubuntu:xenial docker image, but it seems this image might have differences and doesn't package everything...
- Using apt-offline + dselect and dpkg to set the list of packages to install
And we haven't had much luck...
The only solution left, but it is a very annoying one is to install a base appliance pre-update. Install apt-offline and generate a new default signature that everyone will use with those --install-packages but then again, the problem is when i install apt-offline, i get up to date packages for python for example. These packages won't be packaged by apt-offline when i do a "apt-offline get" because the signature indicates their are up to date.
So we are looking for:
- A way to use a signature, default or from a real appliance
- A way to specify more packages to install provided we don't have access to the appliance
- A way to package all required packages even if they are up to date
- Or something that falls into these lines