1

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:

  1. 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)

  2. try to reproduce the changes in the custom script (this is where the problem is)

  3. deploy the changes, in a loop

Do you have any recommendations? (puppet?, chef?, rsync whole filesystem?, move the filesystem under version control?)

1

1 Answer 1

1

Ansible would be my recommendation.

It can do everything in step 1 through SSH, without requiring any agent to be installed on the devices (Python incl. JSON library are recommended though). Instead of step 2, I'd suggest to run step 1 on each device.

Puppet is great for environments with big numbers of devices. It can do everything in step 1 at least as well as Ansible, but requires some overhead effort (installing Puppet Agent and dependencies on each device, setting up Puppet Master, allow Devices to connect to Puppet Master through HTTP.

rsync might seam like a simple solution at first. However you will likely spend lots of time scripting around problems other tools already solve or don't run into in the first time.

Not the answer you're looking for? Browse other questions tagged .