# Provisioning config for my (family's) laptops: Puppet vs Ansible vs Chef vs Salt vs NixOS (2024-02-19)

**URL:** <https://pluralist.net/t/provisioning-config-for-my-familys-laptops-puppet-vs-ansible-vs-chef-vs-salt-vs-nixos-2024-02-19/81>\
**Category:** breadcrumbs\
**Created:** [February 19, 2024, 8:00am UTC](https://pluralist.net/t/provisioning-config-for-my-familys-laptops-puppet-vs-ansible-vs-chef-vs-salt-vs-nixos-2024-02-19/81 "2024-02-19T08:00:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![delyan](https://pluralist.net/user_avatar/pluralist.net/delyan/32/245_2.png) [@delyan](https://pluralist.net/u/delyan)\
**Post date:** [February 19, 2024, 8:00am UTC](https://pluralist.net/t/provisioning-config-for-my-familys-laptops-puppet-vs-ansible-vs-chef-vs-salt-vs-nixos-2024-02-19/81/1 "2024-02-19T08:00:00Z")

</div>

There are many computers around the house. Some of them are used by my daughters. And these I want to make sure are always up to date and fully functional. I am tired of bash scripts and PowerShell scripts… is there automation? Yes! Of course…

I was looking at Grafana (for an unrelated reason) when I was reminded of the various ways we have to configure physical hardware (at home or in the data center):

(These are the Grafana “recipes”)

| Tool | Project |
| --- | --- |
| Puppet | [https://forge.puppet.com/puppet/grafana](https://forge.puppet.com/puppet/grafana) |
| Ansible | [GitHub - grafana/grafana-ansible-collection: grafana.grafana Ansible collection provides modules and roles for managing various resources on Grafana Cloud and roles to manage and deploy Grafana Agent and Grafana](https://github.com/grafana/grafana-ansible-collection) |
| Chef | [GitHub - sous-chefs/grafana: Development repository for the grafana cookbook](https://github.com/sous-chefs/chef-grafana) |
| Saltstack | [GitHub - salt-formulas/salt-formula-grafana](https://github.com/salt-formulas/salt-formula-grafana) |
| Jsonnet | [GitHub - grafana/grafonnet-lib: Jsonnet library for generating Grafana dashboard files.](https://github.com/grafana/grafonnet-lib/) |
| NixOS | services.grafana.provision module |

* * *

# a trip down memory lane

Remembering back in 2011 when at [Meebo](http://meebo.com/) we used Puppet (to configure physical servers) and Nagios (to monitor them).

### Puppet

- Back in 2012 my Google [Goobuntu](https://en.wikipedia.org/wiki/Goobuntu) (Lenovo X220) laptop was certainly managed by some flavor of puppet (confirmed by [this old ZDNet article](https://www.zdnet.com/article/the-truth-about-goobuntu-googles-in-house-desktop-ubuntu-linux/))

> To manage all these Goobuntu desktops, Google uses apt and Puppet desktop administration tools. This gives the Google desktop management team the power to quickly control and manage their PCs. That’s important because, “A single reboot can cost us a million dollars per instance.”Aug 29, 2012

### Nagios

- [nagios.org](https://www.nagios.org/)

> Nagios is an event monitoring system. Nagios offers monitoring and alerting services for servers, switches, applications and services. It alerts users when things go wrong and alerts them a second time when the problem has been resolved. Ethan Galstad and a group of developers originally wrote Nagios as NetSaint. [Wikipedia](https://en.wikipedia.org/wiki/Nagios)  
> Programming language: [C](https://www.google.com/search?newwindow=1&client=firefox-b-1-e&sca_esv=f870c8fcad90903a&sxsrf=ACQVn08jM2XyRjx6KZsH8_g2CJIzTCrCtw:1708484606837&q=C+programming+language&si=AKbGX_paaCugDdYkuX2heTJMr0_FGRox2AzKVmiTg2eQr2d-rtZjD37nqOzLVUUFtHRkSalEpvJ8G7GzkNo-52UMq7hJfqtKYAyIfch7vSxthFqpDZsehd8DZV6rA7cs0fvLar6zrZa3-8s5-c-xBlVoI0ksTVRCPQsJ3qL4IRm2nDuqZSKJvV8lRdU5EkEjcLgPcAXl8PDC54SGwWRnDAsfsFPs8EV3NQ%3D%3D&sa=X&ved=2ahUKEwjXzeCQubuEAxWMMTQIHRCNC2cQmxMoAHoECFYQAg)  
> Initial release: March 1, 2002; 21 years ago  
> License: GPLv2

* * *

# What should we use?

What should we use to manage the inventory of personal machines?

- Puppet - seems old by now, but is probably well tested and reliable. (Does Google still use it? I wonder…)
- Saltstack - seems like the modern way to go about doing this
- NixOS - very attractive option - Darren has opinions (I’ll read them all(
  - [https://twitter.com/ibuildthecloud/status/1658968268395384843](https://twitter.com/ibuildthecloud/status/1658968268395384843)
  - [https://twitter.com/search?q=ibuildthecloud%20nixos&src=typed\_query](https://twitter.com/search?q=ibuildthecloud%20nixos&src=typed_query)

* * *

# 2024-02-21

From Anders’ excellent “[Screenshots from developers](https://anders.unix.se/2015/12/10/screenshots-from-developers--2002-vs.-2015/)” [page](https://anders.unix.se/2015/12/10/screenshots-from-developers--2002-vs.-2015/) it seems that [Timothee “TTimo” Besset](https://en.wikipedia.org/wiki/Timothee_Besset) uses [SaltStack](https://about:blank):

> [![](https://anders.unix.se/images/desktop_ttimo_2015.png.thumb.jpg) ](https://anders.unix.se/images/desktop_ttimo_2015.png)  
> November 2015  
> ‘screenshot as code’, I maintain my desktop configuration through saltstack: [Commits · TTimo/linux-salted · GitHub](https://github.com/TTimo/linux-salted/commits/master)
