• Stars
    star
    228
  • Rank 175,267 (Top 4 %)
  • Language
    C
  • License
    GNU Lesser Genera...
  • Created over 11 years ago
  • Updated almost 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Disnix: A Nix-based distributed service deployment tool

Disnix

Disnix is a distributed service deployment extension for the Nix package manager.

Nix builds packages from Nix expressions and manages intra-dependencies on single systems. Disnix extends the Nix approach to distributed service-oriented systems by managing inter-dependencies of a distributed system and performs the distribution and activation of distributed system components.

It uses Nix expressions that capture the services, the infrastructure and the distribution of services to machines to automate the entire deployment process.

Prerequisites

In order to build Disnix from source code, the following packages are required:

When building directly from a Git clone, you also need:

To be able to build software with Disnix, Nix and Nixpkgs are required:

To run the Disnix service you need the following packages:

  • Dysnomia, for activation and deactivation of services
  • OpenSSH, for using the disnix-ssh-client

These dependencies can be acquired with the Nix package manager, your host system's package manager or be compiled from sources. Consult the documentation of your distribution or the corresponding packages for more information.

Installation

Disnix is a typical autotools based package which can be compiled and installed by running the following commands in a shell session:

$ ./configure
$ make
$ make install

When building from the Git repository, you should run the bootstrap script first:

$ ./bootstrap

For more information about using the autotools setup or for customizing the configuration, take a look at the ./INSTALL file.

Disnix must be installed on a coordinator machine that initiates deployment as well as all target machines in the network to which service components can be deployed.

On the target machines, you must also run the disnix-service to make deployment operations remotely accessible. The Disnix service requires a protocol wrapper to actually do this. The default wrapper in the Disnix distribution is the SSH wrapper. More information on this can be found in the Disnix manual.

Moreover, it also requires Dysnomia to be installed so that services can activated and deactivated.

The coordinator machine requires the presence of a copy of Nixpkgs to make building of service components possible. In order to find the location of Nixpkgs, the NIX_PATH environment variable must be refer to the location where Nixpkgs is stored. This can be done by running the following command-line instruction:

$ export NIX_PATH="nixpkgs=/path/to/nixpkgs"

On NixOS, this environment variable has already been configured.

Usage

In order to deploy a service-oriented system, a developer has to write Nix expressions that capture the services of which a distributed system consists, the infrastructure that descibes the machines in a network (including their properties) and a distribution of service components to machines in the network.

By invoking disnix-env with these Nix expressions as parameters, services are automatically built from source code (including all its intra-dependencies), distributed to the target machines and activated in the right order. In case of a failure a rollback is performed:

$ disnix-env -s services.nix -i infrastructure.nix -d distribution.nix

See the tutorials on the webpage for more information on deploying a service-oriented system with Disnix.

Disnix itself has a modular architecture, which supports various extensions that can be used to make integration with the host environment better and deployment activities more convenient. Refer to the Disnix manual to see what extensions can be used.

Manual

Disnix has a nice Docbook manual that can be compiled yourself. However, it is also available online.

License

Disnix is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation either version 2.1 of the License, or (at your option) any later version. Disnix is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

More Repositories

1

node2nix

Generate Nix expressions to build NPM packages
Nix
472
star
2

nix-processmgmt

Experimental Nix-based process management framework
Nix
226
star
3

composer2nix

Generate Nix expressions to build PHP composer packages
Nix
88
star
4

dysnomia

Dysnomia: A tool for deploying mutable components
Shell
72
star
5

libiff

Portable, extensible parser for the Interchange File Format (IFF)
C
55
star
6

nijs

NiJS: An internal DSL for Nix in JavaScript
JavaScript
54
star
7

disnixos

DisnixOS: A Disnix extension providing complementary infrastructure deployment using NixOS
Shell
43
star
8

nix-patchtools

Autopatching binary packages to make them work with Nix
Shell
39
star
9

nix-androidenvtests

Nix Android build tests
Nix
34
star
10

dydisnix

Dynamic Disnix: A toolset enabling self-adaptive redeployment on top of Disnix
C
29
star
11

libilbm

Parser library for the ILBM: IFF Interleaved BitMap format
C
28
star
12

nix-xcodeenvtests

Nix xcode env tests
Nix
27
star
13

nix-lowlevel-experiments

Exploring low-level Nix, NixOS and system concepts
Nix
20
star
14

libamivideo

Conversion library for Amiga planar graphics data and EHB, HAM screen modes
C
14
star
15

disnix-composition-example

A trivial HelloWorld example used to demonstrate in which ways components can be composed through Disnix
Nix
11
star
16

lib8svx

Parser library for 8SVX: digitally sampled audio voices consisting of 8-bit samples
C
10
star
17

nix-processmgmt-services

Set of example services that can be deployed with the experimental Nix process management framework
Nix
8
star
18

nix-syntax-for-mcedit

Nix expression syntax highlighter for mcedit
Nix
7
star
19

disnix-stafftracker-java-example

A Java/Webservice based toy system to test Disnix's deployment features
Nix
7
star
20

nix-amigaosenv

Hacky Nix-based AmigaOS build environment
Nix
6
star
21

placebo-npm

Installs NPM dependencies obtained from a custom local cache
JavaScript
6
star
22

disnix-stafftracker-php-example

A PHP/MySQL-based toy system to test Disnix's deployment features
Nix
6
star
23

node-hydra-connector

A Node.js module that allows remote control of a Hydra instance: a Nix-based continuous integration service
Nix
6
star
24

disnix-stafftracker-nodejs-example

A REST/Node.js based toy system to test Disnix's deployment features
Nix
5
star
25

hydra-backup

My custom hydra backup scripts
Perl
5
star
26

SDL_ILBM

A library and viewer for handling ILBM images in SDL applications
C
5
star
27

disnix-proxy-example

A trivial example case using a TCP proxy hiding side effects of the transition process
Nix
4
star
28

php-sbgallery

Simple embeddable picture gallery
PHP
4
star
29

SDL_8SVX

A library and player for handling 8SVX instruments in SDL applications
C
4
star
30

pndp

PNDP: An internal DSL for Nix in PHP
PHP
4
star
31

disnix-chord-example

An example deploying a Chord-based distributed hash table with Disnix
Nix
3
star
32

dydisnix-avahi

Avahi-based discovery service for Dynamic Disnix
C
3
star
33

disnix-virtualhosts-example

A Disnix deployment example using target-specific services
Nix
3
star
34

php-sblayout

My custom website layout organiser framework for PHP
PHP
3
star
35

libanim

Parser library for ANIM: An IFF Format For CEL Animations
C
2
star
36

monitoring-playground

An exercise combining technologies to build a monitoring infrastructure
Nix
2
star
37

slasp

SugarLess Asynchronous Structured Programming
Nix
2
star
38

nix-dotnetenvtests

Nix .NET build tests
C#
1
star
39

libprocreact

Process coordination abstraction library for POSIX applications
C
1
star
40

php-sbeditor

Simple embeddable HTML editor
JavaScript
1
star
41

php-sbexampleapps

Example applications built around my PHP packages
PHP
1
star
42

amiilbm

Native AmigaOS ILBM viewer application using my own ILBM parser library
C
1
star
43

disnix-viewvc-example

Disnix ViewVC example
Nix
1
star
44

nix-titaniumenvtests

Nix Titanium tests
Nix
1
star
45

java-sblayout

My custom website layout organiser framework for Java Servlets and JSPs
Java
1
star
46

disnix-stafftracker-dotnet-example

A C#/WCF-based toy system to test Disnix's deployment features
C#
1
star