I am dealing with hundreds of SBC's (Raspberry Pi or similar). They are all networked to a central control PC via ethernet. I need to automate the following:

  • Perform a network OS install
  • Perform various OS-level configuration tasks (i.e., just be able to send & execute a .bat script or similar to all or select machines in bulk)
  • Have some kind of control panel (ideally GUI-based but open to other options) to monitor the status of each device

I'm completely new to the world of dev ops, and I spent about a day researching free, non-SaaS tools and platforms like Ansible, Terraform, Puppet, Kubernetes... but I'm having a hard time understanding if this is even the right domain for my problem to begin with. These tools seem geared toward slightly different applications like IT infrastructure and continuous/high-volume deployment, where I'm just looking to (ideally) deploy to the local network once then be able to monitor it forever from one place.

Is this kind of IaC architecture overkill for my needs? Any other tools you'd recommend instead?

I appreciate any guidance!

  • 2
    Terraform in particular is aimed at objects you can create using network APIs, rather than at physical hardware. You could in principle use Terraform to register your nodes into an inventory system (if that inventory system has a Terraform provider) but Terraform cannot create an actual Raspberry Pi via an API and so I think this problem may not be a good fit for Terraform. Sep 6, 2022 at 23:08
  • 2
    Configuration management tools like Ansible and Puppet can potentially be a better fit since their primary role is installing software and configuration files onto already-running computer systems. Sep 6, 2022 at 23:09
  • 1
    You could also potentially run Kubernetes on single board computers in order to form them into a compute cluster, but that is some software you'll need to install and configure on those systems and so you might choose to set that up using Ansible or Puppet. Given that, I think Ansible or Puppet are good places to start, and then you can see what else you need from there. Sep 6, 2022 at 23:12
  • 2
    From the wording of the question, it's unclear whether you have any of those processes defined yet against individual hosts? If not, then you may not be ready for Puppet/Ansible. Consider looking at the different tools to handle manually-triggered remote installations against just one host (e.g. using a shell script) before worrying about scaling up to hundreds. Tools like Puppet/Ansible solve the problem of repeating an already-well-defined set of processes/config on a larger scale. If those processes aren't known yet for then there may not be much they can help with for now. Sep 7, 2022 at 8:17
  • Thanks very much @MartinAtkins. After further research with a few different SBCs it seems there will be no real way to flash them in an automated manner, this part will have to be done manually. Ty for helping me rule out Terraform, looking into Puppet and it seems like it'll work for config/mgmt once they're online. Hopefully the learning curve pays off
    – A__
    Sep 7, 2022 at 14:44


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.