Installing SlapOS Node from Packages
Installing from Packages has been depreciated but should still work. It requires a GNU/Linux server with wget and Python 2.6/2.7 installed. Supported distributions can be found in the list below and run with the given commands. If a distribution is not listed, installing from sources is another option (depreciated and discouraged).
Debian 8
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_8
.0/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_
8.0/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Debain 7
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_7
.0/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_
7.0/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Debian 6
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_6
.0/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_
6.0/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 16.10
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
16.10/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_16.10/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 16.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
16.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_16.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 15.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
15.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_15.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 14.10
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
14.10/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_14.10/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 14.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
14.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_14.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
OpenSUSE 12.3
sudo su
# zypper addrepo -fc -n "SlapOS Official repo" http://download.opensuse.org/repo
sitories/home:/VIFIBnexedi/openSUSE_12.3/ slapos
# zypper install slapos.node
CentOS 6
sudo su
# wget https://download.opensuse.org/repositories/home:/VIFIBnexedi/CentOS_7/hom
e:VIFIBnexedi.repo -O /etc/yum.repos.d/slapos.repo
# rpm --import http://download.opensuse.org/repositories/home:/VIFIBnexedi/CentO
S_7/repodata/repomd.xml.key
# yum install slapos.node -y
CentOS 6
sudo su
# wget https://download.opensuse.org/repositories/home:/VIFIBnexedi/CentOS_CentO
S-6/home:VIFIBnexedi.repo -O /etc/yum.repos.d/slapos.repo
# sudo rpm --import http://download.opensuse.org/repositories/home:/VIFIBnexedi/
CentOS_CentOS-6/repodata/repomd.xml.key
# sudo yum install slapos.node -y
For the following older distributions following below replace the first line with the line corresponding to your distribution version, run reload and install.
Ubuntu 10.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
10.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_10.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 11.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
11.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_11.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 11.10
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
11.10/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_11.10/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 12.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
12.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_12.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 12.10
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
12.10/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_12.10/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Ubuntu 13.04
sudo su
# echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_
13.04/ ./" | tee /etc/apt/sources.list.d/slapos.list
# wget -O- "https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu
_13.04/Release.key" | apt-key add -
# apt-get update; apt-get install slapos-node
Fedora 17 (No longer working)
sudo su
# wget https://download.opensuse.org/repositories/home:/VIFIBnexedi/Fedora_17/ho
me:VIFIBnexedi.repo -O /etc/yum.repos.d/slapos.repo
# rpm --import http://download.opensuse.org/repositories/home:/VIFIBnexedi/Fedor
a_17/repodata/repomd.xml.key
# yum install slapos.node -y
Fedora 18 (No loger working)
sudo su
# wget https://download.opensuse.org/repositories/home:/VIFIBnexedi/Fedora_18/ho
me:VIFIBnexedi.repo -O /etc/yum.repos.d/slapos.repo
# rpm --import http://download.opensuse.org/repositories/home:/VIFIBnexedi/Fedor
a_18/repodata/repomd.xml.key
# yum install slapos.node -y
OpenSUSE 12.1
sudo su
# zypper addrepo -fc -n "SlapOS Official repo" http://download.opensuse.org/repo
sitories/home:/VIFIBnexedi/openSUSE_12.1/ slapos
# zypper install slapos.node
OpenSUSE 12.2
# zypper addrepo -fc -n "SlapOS Official repo" http://download.opensuse.org/repo
sitories/home:/VIFIBnexedi/openSUSE_12.2/ slapos
# zypper install slapos.node
Installing SlapOS Node from Sources
Installing from sources is depreciated and discouraged. It is still useful for understanding the architecture of SlapOS from a practical point of view. You will need a GNU/Linux Server with Python 2.6/2.7 as well as:
- gcc and the g++ compiler
- make and patch tools
- linux headers for tunneling tools
- uml-utilities and bridge-utils for bridge tools
On Debian-like distributions it is required to install the following using:
sudo su
# apt-get install python gcc g++ make uml-utilities bridge-utils linux-headers-$
(uname -r) patch wget
The GNU/Linux server should either be connected to the Internet with native IPv6 global address or it should have a public IPv4 address. For servers with only a public IPv4, Re6st installation is requried and shown in how to install a SlapOS node.
A SlapOS Slave node is composed of computer partitions. As a reminder, a partition on a Slave node consists of a UNIX user, his directory, a dedicated tap interface and a dedicated IPv6 address. When a software instance is requested to SlapOS Master, SlapOS Master looks for free partitions on every registered Slave Node and chooses one depending on specific service level parameters specified by the user. The chosen SlapOS Node is then requested to instantiate the user-specified software into an free computer partition. Whenever a software instance is no longer used, it is deleted from the Slave node it was previously allocated to and the computer partition is freed and again available.
The installation process of SlapOS Slave node installs several python scripts among them:
slapos node format
invoked to create users, directories, tap interfaces and IPv6 addresses for every service of each computer partition.
slapos node instance/software
, relies on slapgrid core API which implements the SLAP protocol and requests to SlapOS Master Node which software to install, to instanciate, to account usage and to delete.
slapos node console
provides a command line environment to contact SlapOS Master.
slapos node
provides access to the list of running processes in all computer partitions.
The following script can be used to download and install SlapOS:
# Download the example script, to build slapos on /opt/slapos
wget https://lab.nexedi.com/nexedi/slapos/raw/master/component/slapos/build.sh
# After download run it.
bash build.sh
SlapOS is installed using Buildout, which downloads the source code, patches and binaries required to build a software on a given architecture. It handles dependencies between software components automatically.
First, a directory for SlapOS software is created by invoking mkdir /opt/slapos
. We then move to the SlapOS software directory where a Buildout file is created which extends SlapOS's own buildout.cfg. Nothing will be downloaded, only a text file with a link to a URL is created.
Before starting the boostrap process, some environment variables are unset. This is mostly useless on most GNU/Linux distributions or UNIX-like operating systems but it prevents certain errors in a few GNU/Linux distributions with uncommon environment settings.
After this the bootstrap process is started after ensuring a recent version of python (2.6+) is available. The python invocation bootstraps buildout. The buildout invocation interpretes the buildout.cfg file and installs SlapOS on the server.
# Download default cron entries to slapos works automatically
# wget https://lab.nexedi.com/nexedi/slapos.package/raw/master/obs/slapos/debian
/cron.d -O /etc/cron.d/slapos
Optionally, it is possible to define the cron configuration by copying the example above. Parameters can be adapted if you did not follow the exact steps (not recommended). slapformat
is invoked every hour so that if we any changes happen on the network (something not supposed to happen), the Master will eventually be notified. This is very useful in case server hardware is moved from one house to another, from one data center to another, etc.
Note: Your SlapOS node will run automatically every minute if you add those lines to your crontab. If you want to manually launch slapos node, do not add those lines.
Install SlapOS Node via USB
Installing via a USB key containing the SlapOS system image is an experimental! way of adding a new SlapOS node. It requires a SlapOS Master to register the node, a USB stick (8GB+), a computer to download the disk image and create the USB key and a second computer to install the SlapOS node with at least 60GB SSD (SSD provides enough read/writes per second to support SlapOS multi-user load). WARNING: your second computer will be completely erased! by the USB key at the first boot, so make sure there is no valuable data on it.
To write the key (CLI), download the lastest SlapOS image. This image was created with SuSE studio and is a universal image which can be installed on a USB key or on a hard disk. Unpack the image using tar.
# Download http://community.slapos.org/download/latest-vmx
# Untar it
tar xzf SlapOS_Image.x86_64-0.5.16.oem.tar.gz
Plug the USB key into your PC, change to root and identify which device (/dev/sdX
) is the one corresponding to the USB key
# identify device
sudo su
- lsblk
Write to the key.
# Write key
dd if=SlapOS_Image.x86_64-0.5.16.raw of=/dev/sdX
Insert the USB key into your second computer after ensuring its BIOS is configured to:
- boot from USB key
- enable virtualization if you want to host virtual machines
- restart automatically after a power failure (APM setting)
Boot and once the boot sequence finishes, connect as root (login: "root", pw: "linux").
If you have your own SlapOS configuration (slapos.cfg, certificate, key), place it in your configuration in /etc/opt/slapos/
or /etc/slapos
before running slapprepare. To use IPv6 provided by Vifib add a line ipv6_interface = tapVPN
in the [slapformat]
of your slapos.cfg. In case IPv6 is not available on your network, the key will connect automatically to a server via VPN to get a reliable IPv6. If you have IPv6 but your connection is not reliable you can force the use of Vifib IPv6 by naming a file called openvpn-needed
in the directory containing slapos.cfg. Run slapprepare:
#Run command:
slapprepare
# Configuration question you will be asked during boot
Automatically register new computer to Vifib? [y,n]:
What should be the name of this computer? [name]:
Do you want the setup to allow virtual machines inside this node? [y, n]:
Number of SlapOS partitions for this computer? [number]:
Is this a virtual Machine? [y,n]:
Do you want to use SlapOS with a second disk ? [y,n]:
Do you want to use vpn to provide ipv6? [y,n]:
Do you want to force the use lxc on this computer? [y,n]:
Do you want a remote ssh access? [y,n]:
If you don't want to register with Vifib enter "N" and follow the instructions, else enter "Y". Name your computer to identify it in the network, do not allow nested virtual machines, set 20 partitions, enter "N" for not labelling this computer a virtual machine, set "Y" to use and format(!) this computer's hard disk for SlapOS and opt to use VPN for IPv6 (more stable). Only select LXC if you plan to use them and have a valid ssh public key ready (Note, that slapprepare will install a boot script that resets the root password after each run and boot - use the ssh key to not loose access to your computer).
Confirm if everything is correct, add your Vifib login/password and enter the url of your public ssh key (use a service like pastebin to enter your public key and get a "raw" link).
Once all software has been installed, SlapOS will format the server creating 100 IPv6 adresses, users and directories with respective tab interfaces and bridges. Every resource which will be executed on a SlapOS server will be attached to its dedicated address, user and directory creating a simple form of compartments between processes without the overload of virtualization or chrooting. Once formatting is done, the results will be uploaded to the master you specified.
Install SlapOS Node on Virtual Machine
Installing a Slave Node on a VMWare virtual machine using the SlapOS sytem image is straightforward. You will need a machine with VMWare installed (download version 4.0) as well as well as a SlapOS Master to register with.
Start by
# Download the ".bundle" file for your linux distribuition (32 or 64 bits).
# in case the extension is .txt change it to .bundle
chmod +x VMware-Player-4.0.2-591240.x86_64.bunble
gksudo ./VMware-Player-4.0.2-591240.x86_64.bunble
# follow instructions
Afterwards, download the latest SlapOS image. This image was created with SuSE studio and is a virtual machine which can be run on any player supporting .vmdk files. Unpack after download.
# Download http://community.slapos.org/download/latest-vmx
tar -xzf SlapOS_Image.x86_64-latest.vmx.tar.gz
You can now open your VMware player. Choose Open a Virtual Machine and select yours. Head over to the configuration and change the network adapter to NAT.
Boot and once the boot sequence finishes, connect as root (login: "root", pw: "linux").
If you have your own SlapOS configuration (slapos.cfg, certificate, key), place it in your configuration in /etc/opt/slapos/
or /etc/slapos
before running slapprepare. To use IPv6 provided by Vifib add a line ipv6_interface = tapVPN
in the [slapformat]
of your slapos.cfg. In case IPv6 is not available on your network, the key will connect automatically to a server via VPN to get a reliable IPv6. If you have IPv6 but your connection is not reliable you can force the use of Vifib IPv6 by naming a file called openvpn-needed
in the directory containing slapos.cfg. Run slapprepare:
#Run command:
slapprepare
# Configuration questions you will be asked during boot
Automatically register new computer to Vifib? [y,n]:
What should be the name of this computer? [name]:
Do you want the setup to allow virtual machines inside this node? [y, n]:
Number of SlapOS partitions for this computer? [number]:
Is this a virtual Machine? [y,n]:
Do you want to use vpn to provide ipv6? [y,n]:
Do you want to force the use lxc on this computer? [y,n]:
Do you want a remote ssh access? [y,n]:
If you don't want to register with Vifib enter "N", name your computer to identify it in the network, do not allow nested virtual machines, set 20 partitions, confirm this is a virtual machine and to use VPN for IPv6 (more stable). Only select LXC if you plan to use them and have a valid ssh public key ready (Note, that slapprepare will install a boot script that resets the root password after each run and boot - use the ssh key to not loose access to your computer).
Confirm if everything is correct, add your Vifib login/password and enter the url of your public ssh key (use a service like pastebin to enter your public key and get a "raw" link).
Once all software has been installed, SlapOS will format the server creating 100 IPv6 adresses, users and directories with respective tab interfaces and bridges. Every resource which will be executed on a SlapOS server will be attached to its dedicated address, user and directory creating a simple form of compartments between processes without the overload of virtualization or chrooting. Once formatting is done, the results will be uploaded to the master you specified.
Install SlapOS Node on Windows (Cygwin)
Installing a SlapOS node on Windows was an experimental attempt covering installation of Cygwin and installation of SlapOS from sources (no longer working). You will need a Windows machine as well as a SlapOS Master to register with.
Head to the Cygwin website and install Cygwin to downlaod the GUI installer. Note that the root directory of Cygwin (default: C:\cygwin
) will become /
during the installation. You also must have write access to the parent directory and be aware that any ACLs (access control lists) on the parent directory will determine access to the installed files.
SlapOS requires a number of packages beyond the minimal Cygwin installation (more info). Please choose the following packages:
apache gcc4 libxslt-dev readline
apache-dev gcc4-core make rpcgen
autobuild gcc4-c++ openldap sqllite3
autoconf git openldap-dev stunnel
automake glib2.0 openssl subversion
binutils gtk+ openssl-dev subversion-dev
bison gtk2.0 patch vim
bzr libgtk2.0-dev pkg-config w32api
cmake libtool python wget
cyrus-sasl libxml2 python-libxlst zlib
db4.5 libxml2-dev python-libxml zlib-dev
flex libxslt python-nummy
Once Cygwin is installed, double click the icon (or C:\cygwin\Cygwin.bat
) and enter the following commands:
# create directory
$ mkdir -p /opt/slapos
# get source form windows branch
$ cd /opt/slapos
$ mkdir src
$ git clone -b windows http://git.erp5.org/repos/slapos.git src
# create /opt/slapos/buildout.cfg with content:
[buildout]
extends = src/component/slapos/buildout.cfg
# add openssl path to PATH so python 2.7 can find shared lib
$ export PATH=/opt/slapos/parts/openssl/bin:$PATH
$ echo PATH=/opt/slapos/parts/openssl/bin:$PATH >> ~/.bash_profile
# install SlapOS using buildout
$ cd /opt/slapos
$ python -S -c 'import urllib2;print urllib2.urlopen(\
"http://www.nexedi.org/static/packages/source/slapos.buildout/bootstrap-1.5.3-dev-SlapOS-002.py" \
).read()' > bootstrap.py
$ python -S bootstrap.py
$ bin/buildout -v -N
Wait until buildout completes. Then
$ cd /opt/slapos
#env={} in python2.7 results in not finding required shared library
$ sed -i "s/env={}/env=None/g" `find eggs -name svcbackend.py`
If you have IPv6 you can skip this section. If you only have a public IPv4 but no native IPv6, configure a IPv6 tunnel:
# install IPv6
$ netsh interface ipv6 install
# configure Teredo Tunnel
$ netsh interface ipv6 set teredo client teredo.remlab.net 60
Validate IPv6 works (output should be similar)
$ netsh interface ipv6 show interface
Idx Met MTU State Name
--- ---- ----- ------------ -----
14 0 1500 Connected Wireless Network Connection
13 0 1500 Disconnected Local Area Connection
9 0 1500 Connected VirtualBox Host-Only Network
4 2 1280 Connected Teredo Tunneling Pseudo-Interface
3 1 1280 Connected 6to4 Pseudo-Interface
2 1 1280 Connected Automatic Tunneling Pseudo-Interface
1 0 1500 Connected Loopback Pseudo-Interface
And ensure the state of Teredo Tunneling Pseudo-Interface is connected
Next configure SlapOS by creating /opt/slapos/slapos.cfg
with:
[slapos]
software_root = /opt/slapgrid
instance_root = /srv/slapgrid
master_url = https://slap.vifib.com
computer_id = COMP-XXX
key_file = /etc/opt/slapos/key
cert_file = /etc/opt/slapos/certificate
certificate_repository_path = /etc/opt/slapos/pki/
[slapformat]
computer_xml = /etc/slapos/slapos.xml
log_file = /var/log/slapformat.log
partition_amount = 2
bridge_name = slapbr0
partition_base_name = slappart
user_base_name = slapuser
tap_base_name = slaptap
# choose any local network that doesn't conflict with current machine
# configuration
ipv4_local_network = 192.168.0.0/16"
Replace the computer_id with the id you required from your master.
Create the directories and copy the key and certificate files which were generated before to /etc/slapos
:
$ mkdir -p /etc/slapos/ski
$ mkdir -p /opt/slapgrid
$ mkdir -p /svr/slapgrid
Next, create the file /opt/slapos/computer_definition.cfg:
[computer]
[partition_0]
address = 192.168.128.28/255.255.255.0
user = slapuser0
network_interface = slapbr0
pathname = slappart0
[partition_1]
address = 192.168.128.32/255.255.255.0
user = slapuser1
network_interface = slapbr0
pathname = slappart1
Run slapformat to register the partitions:
$ cd /opt/slapos
$ bin/slapformat -c --alter_network=False --alter_user=False -i computer_definition.cfg slapos.cfg
Run slapgrid to check what should be done:
$ cd /opt/slapos
$ bin/slapgrid -c slapos.cfg
Everything should be ok and the SlapOS Slave Node is registered. Note, that running slapformat the first time will result in an error Device or resource busy.... On the second run, no more error should appear.
You can also use the windows installer (md5sum: 175829d0d6c7e3d41bb3458fba340c6b) directly. Set the root directory of Slapos to C:\slapos
by default, then after installation you can redo the configuration above. The installer will also provide a SlapOS Console for running commands such as slapgrid, slapformat etc.