The Nixes Tool Set
Installing, maintaining and controlling applications across PlanetLab.
Overview
Nixes provided a set of bash scripts to install, maintain, control and monitor
applications on PlanetLab. It bootstrapped nodes with yum and let the user
install RPMs from the PlanetLab distribution. It was designed for simplicity and
performance, and had three parts: the scripts, a configuration file, and a
repository — a public web directory — hosting the application being deployed.
This is the kind of infrastructure that rarely gets written up but without which none of the wide-area experiments happen.
The Tools
Every tool took a list of nodes — fully qualified Internet addresses — and authenticated to them over SSH with a public/private key pair named in the configuration file.
plsetup— bootstraps the vserver withyum,gzipand Javaplinstallrpm— installs RPMs across all nodes, resolving dependencies automaticallypldeploy— deploys a file structure to the nodesplcmd— executes an arbitrary set of commands on all nodes, named by an environment variable holding the script
All of them ran in parallel, thirty threads by default, and wrote a per-node log
into the directory named by TMP. Only success was reported to the console; a
failure sent you to the logs. Running several tools in parallel yourself was
explicitly discouraged — the logs collide.
Configuration
A .nixesrc in the user’s home directory configured everything. Options
included the SSH identity, the PlanetLab slice name, the location of the
bootstrap script, and the base location and list of files and executables to
deploy. Options could equally be set in the environment, sharing a namespace
with the file.
Bootstrapping
Bootstrapping downloaded a script to each node and ran it, installing yum so
that any RPM could subsequently be pulled by name. Custom RPMs not on the Red
Hat mirrors could be added at the top of bootstrap.sh.
Java was a special case. Because of Sun’s licensing at the time, users had to download the JDK themselves and host it on a server only they knew about, then update the location in the bootstrap script — a detail that says a good deal about the era.
Implementation and Availability
The scripts were written in bash, with static interleaved scheduling; dynamic scheduling was noted as a possible improvement that was never made. Nixes was distributed to users who registered on the lab site, and is no longer available.
Feedback and bug reports went to Stefan Birrer.
People
Lead & PI
- Fabián E. Bustamante (Northwestern University)
Students
Related Links
- Measurement and Experimentation from the Edge
- Resilient Overlays and Multicast — Nixes supported those wide-area experiments