I have approximately 40 arm devices running debian on the internet with known - dynamic - ip addresses. They have limited bandwidth (on 3g mobile, with a piad data plan) I do have ssh access. Sometimes there is a need to upgrade these machines. There are only 2 files and the log directory which are not identical.
Now i use a custom-built rsync/install script and loop on all the machines.
My biggest concern is that the workflow is quite error prone:
upgrading the system is done first on a test device. (installing-removing packages, setting config files in etc, upgrading kernel, installing new services via /etc/init.d scripts, thing like this)
try to reproduce the changes in the custom script (this is where the problem is)
deploy the changes, in a loop
Do you have any recommendations? (puppet?, chef?, rsync whole filesystem?, move the filesystem under version control?)