Chapter 1. Installing SlapOS Slave Node from the Sources
We need Cygwin environment in order to run SlapOS node on the Windows. The following steps describe how to install SlapOS from the sources:
Go to "http://cygwin.com/" and click on "Install Cygwin Now!". This will download a GUI installer called setup.exe which can be run to download a complete cygwin installation via the internet. Follow the instructions on each screen to install Cygwin.
The Root Directory for Cygwin (default C:\cygwin) will become / within your Cygwin installation. You must have write access to the parent directory, and any ACLs on the parent directory will determine access to installed files.
By default, setup.exe will install only the packages in the Base category and their dependencies, resulting in a minimal Cygwin installation. We need choose the packages required by SlapOS, see Appendix A, Cygwin Required Packages List. Since setup.exe automatically selects dependencies, be careful not to unselect any required packages. In particular, everything in the Base category is required.
More information please refer to http://cygwin.com/cygwin-ug-net/setup-net.html#setup-download
Double click the desktop icon "Cygwin" or C:\cygwin\Cygwin.bat (Assume the cygwin root directory is C:\cygwin). A cygwin box will open, the following commands are typed in this box.
First we create the directory
$ mkdir -p /opt/slapos
Get the source, we need use branch "windows":
$ cd /opt/slapos
$ mkdir src
$ git clone -b windows http://git.erp5.org/repos/slapos.git src
Create the file /opt/slapos/buildout.cfg with content:
[buildout]
extends = src/component/slapos/buildout.cfg
Add extra openssl path to PATH, python2.7 needs the path of openssl library to find the shared library
$ 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
Waiting until buildout process is completed. Finally take some minor changes:
$ cd /opt/slapos
$ sed -i "s/env={}/env=None/g" `find eggs -name svcbackend.py`
env={} results in python2.7 can't find the required shared library.
Before proceeding further, we need to register your server to VIFIB community Cloud. By doing so, we will obtain X509 certificate and key which are later needed for the configuration process.
Refer to http://www.slapos.org/wiki/slapos-Wiki.Home/osoe-Lecture.SlapOS.Extended/developer-Installing.SlapOS.Slave.Node.Source
If you have a public IPv4 address attached to internet but do not have native IPv6. You need configure an IPv6 Tunnel as the following:
-
Install IPv6
$ netsh interface ipv6 install
-
Configure Teredo Tunnel
$ netsh interface ipv6 set teredo client teredo.remlab.net 60
-
Check it works
$ netsh interface ipv6 show interface
The output maybe like this:
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
Be sure the state of Teredo Tunneling Pseudo-Interface is connected
If you already have an IPv6 enabled provider, skip this.
It is now time to configure SlapOS. First we create the file /opt/slapos/slapos.cfg:
[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
# You can choose any other local network which does not conflict with your
# current machine configuration
ipv4_local_network = 192.168.0.0/16"
Replace the computer_id with the responding id you required from VIFIB. Then 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
Now, 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
Everyting is OK, my SlapOS Slave Node is on.
Note
Running slapformat at first time will raise an error: "sem_init: Device or resource busy ..." Run slapformat again, no error occurs. I don't know why, it need to be resolved.