The basic Disnix toolset provides useful features to make automated deployment of a service-oriented system possible and properties to make this process efficient and reliable. However, the toolset is very generic and lacks certain features to completely automate a deployment process. For instance, some non-functional properties cannot be addressed in a generic manner, since they are specific to the domain in which the system has to be used. Also the machines to which services are deployed must be installed by some means first.
On this page we give some information about Disnix extensions we have available.
By default Disnix includes a SSH wrapper for communication with the Disnix service or a D-Bus loopback client. This package implements a web service (SOAP protocol) wrapper around the Disnix service and a command line utility: disnix-soap-client to connect to the remote web service. This package serves as an example case, demonstrating how custom communication protocols can be supported in Disnix.
Disnix is designed for deployment of services in heterogeneous environments and does not manage the underlying system configurations of the machines. Disnix only manages the services of which a system is composed and the activation. NixOS is a Nix-based Linux distribution, which offers infrastructure management from a declarative specification of NixOS configurations.
DisnixOS combines the infrastructure deployment features of NixOS with Disnix. With DisnixOS you can first deploy a network of machines with NixOps and deploy services inside them with Disnix. You can also deploy services in a network of generated virtual machines machines using the NixOS test driver and run testcases inside them.
The basic Disnix toolset requires users to manually specify an infrastructure model reflecting the configurations of the systems in a network. Moreover, users must also explicitly write a distribution model to map services to machines in the network. This approach is quite inflexible in many cases, since for each event in the network (such as a failing machine or a new machine) these properties must be changed.
The dynamic Disnix extension extends the Disnix architecture with a discovery service, which automatically detects machines in the network and their properties and a configurable distribution generator, which maps services to machines in the network based on non-functional attributes and a custom implemented policy.
The dynamic Disnix extension is still under heavy development and no releases are available yet. The latest development version can be obtained from the Dynamic Disnix Github repository.