NixOS and the case for declarative configuration
Amazon Included
In practical terms, you will probably not use VirtualBox very often as your deployment platform, but you might want to run your VMs in the Amazon cloud, which NixOps also supports. NixOps offers support for the EC2, S3 storage and the Simple Queue Service (SQS) services, as well as authentication via IAM (Identity and Access Management) and SSH key pairs.
Although NixOps mainly focuses on virtualized systems, it interestingly offers the possibility of installing physical systems for the hosting provider, Hetzner [4] (bare metal deployment). In contrast to the Amazon setup, NixOps does not rely on a storage API to install a VM but uses the information provided by the Hetzner Rescue Console to bootstrap the new system. In principle, nothing prevents you from applying this method with other hosting providers and writing similar backends. This kind of support would certainly be welcome in the NixOps community.
Conclusions
The Nix approach resembles other well-known configuration management tools, such as Boss and Puppet. Instead of changing the state of a system ad hoc with commands (imperatively), these tools describe the desired state in configuration files and leave it to the tools to bring about the changes. The Nix family takes this process one step further by applying principles that are well-known from functional programming: the "output" is a new, working system. The Nix package manager resolves dependencies that exist in configuration files.
Nix comes from the academic environment, but it is also used widely in production. For virtualized and cloud systems, NixOS and NixOps offer an interesting option for systematic configuration and deployment of VMs. The Nix environment currently supports production systems such as VirtualBox, the Amazon Cloud, and the hosting provider Hetzner. An interesting future addition would be better support for Linux KVM and other cloud environments.
Infos
- NixOS: http://nixos.org
- Nix Manual: http://nixos.org/nix/manual/
- NixOps Users' Guide: http://hydra.nixos.org/build/6347332/download/1/manual/manual.html
- Hetzner backend for NixOps: https://github.com/NixOS/nixops/pull/119
« Previous 1 2 3 4
Buy this article as PDF
(incl. VAT)