3 ms·
To say what my sibling comments say, more briefly: With the nix system you can fully declaratively state your entire fleet of machines, from your highest level
by nh2 9y ago
To say what my sibling comments say, more briefly:
With the nix system you can fully declaratively state your entire fleet of machines, from your highest level application configs all the way down to kernel patches.
When you run nixops, your machines become exactly as specified.
That this works reliably is a novelty: most other configuration management tools work like "action runners" that try in a best-effort fashion to achieve the desired state, but that doesn't always work (for example in Ansible, declaring a package as installed installs it, but NOT declaring a package will not uninstall it).
It is made possible because the nix system is designed from the bottom up to be declarative. That makes it different from Puppet.
- majewsky 9y ago> most other configuration management tools work like "action runners" that try in a best-effort fashion to achieve the desired state, but that doesn't always work (for example in Ansible, declaring a package as installed installs it, but NOT declaring a package will not uninstall it). Most other configuration management tools have no choice. I got my own [1] to the point where it cannot only provision files/users/groups, but also clean them up correctly most of the time. However, since it is not the final authority (the package manager is... or rather, root is), there will always be situations where the entity that needs to be provisioned will be found to be in an entirely unanticipated state. You have basically two ways to solve this conundrum: 1. just throw everything away and start from a clean slate when the configuration changes (aka containers) 2. do configuration management in the package manager and encourage/force root to keep his filthy hands off the system partition (aka NixOS et al) [1] https://github.com/holocm/holo https://github.com/holocm/holo
- jacques_chester 9y agoBOSH uses both tactics. It deals in whole VMs, but parks deployed software in a known location that's the same for all stemcells.