Nitos Testbed resource controllers (NTRC)
Contains:
Frisbee resource controller which conrols frisbee and imagezip in order to save and load images to nodes.
CM resource controller which controls chassis managers on nodes.
User resource controller which administers users.
omf6 script which orchistrates the above.
These tools are under development. Unpredictable behaviour is to be expected untill a stable version is provided.
Prerequirements
Install frisbee, which is required by the frisbee proxy
$ apt-get install frisbee
If that fails add this line 'deb http://pkg.mytestbed.net/ubuntu precise/ ' to your /etc/apt/sources.list and then 'apt-get update'.
Installation
First you need to install the gem
$ gem install nitos_testbed_rc --pre
Then you need to run the install_ntrc script to generate the configuration files tutorial.
$ install_ntrc
Hint: If you have an installed nitos_testbed_rc gem and want to keep the configuration files, execute install_ntrc script with -nc flag.
$ install_ntrc -nc
Create certificates
Use omf_cert.rb script to generate the following certificates and place them on directories '/root/.omf' and '/root/.omf/trusted_roots'.
$ mkdir /root/.omf
$ mkdir /root/.omf/trusted_roots
$ cd /root/.omf
Create a root certificate (change DOMAIN).
Important!!! If you already have a root certificate (probably created while installing omf_sfa) DO NOT create this certificate again and use the old one instead.
$ omf_cert.rb --email root@DOMAIN -o /root/.omf/trusted_roots/root.pem --duration 5000000 create_root
Create a certificate for user_proxy of NTRC (change DOMAIN, XMPP_DOMAIN and if you wish the output file names).
$ omf_cert.rb -o user_factory.pem --email user_factory@DOMAIN --resource-type user_factory --resource-id xmpp://user_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
Create a certificate for cm_proxy of NTRC (change DOMAIN, XMPP_DOMAIN and if you wish the output file names).
$ omf_cert.rb -o cm_factory.pem --email cm_factory@DOMAIN --resource-type cm_factory --resource-id xmpp://cm_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
Create a certificate for frisbee_proxy of NTRC (change DOMAIN, XMPP_DOMAIN and if you wish the output file names).
$ omf_cert.rb -o frisbee_factory.pem --email frisbee_factory@DOMAIN --resource-type frisbee_factory --resource-id xmpp://frisbee_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
Finally, omf6 script will be used by every user in the server, so we need to create a certificate for each user and place it in folder '~/.omf'.
Important (just for the root user)!!! If you already have a certificate for the root user in folder /root/.omf (probably created while installing omf_sfa) DO NOT create this certificate again and use the old one instead.
Use this commands to generate a certificate for a user (change DOMAIN, USERNAME and if you wish the output file names)
$ omf_cert.rb -o user_cert.pem --email USERNAME@DOMAIN --user USERNAME --root /root/.omf/trusted_roots/root.pem --duration 50000000 --geni_uri URI:urn:publicid:IDN+DOMAIN+user+USERNAME create_user
$ cp user_cert.pem /home/USERNAME/.omf
Configuration files
Change configuration file '/etc/nitos_testbed_rc/user_proxy_conf.yaml', which is related to user_proxy of NTRC. For example:
#xmpp details
:xmpp:
:username: user_proxy
:password: pw
:server: DOMAIN
#x509 certificates to be used by user_proxy
:auth:
:root_cert_dir: ~/.omf/trusted_roots
:entity_cert: ~/.omf/user_factory.pem
:entity_key: ~/.omf/user_factory.pkey
#operation mode for OmfCommon.init (development, production, etc)
:operationMode: development
Change configuration file '/etc/nitos_testbed_rc/cm_proxy_conf.yaml', which is related to cm_proxy of NTRC. For example:
#details to be used for the connection to the xmpp server
:xmpp:
:username: cm_proxy
:password: pw
:server: DOMAIN
#x509 certificates to be used by cm_proxy
:auth:
:root_cert_dir: ~/.omf/trusted_roots
:entity_cert: ~/.omf/cm_factory.pem
:entity_key: ~/.omf/cm_factory.pkey
#time (in seconds) before timeout error occurs
:timeout: 80
#operation mode for OmfCommon.init (development, production, etc)
:operationMode: development
#testbed xmpp topic
:testbedTopic: am_controller
Change configuration file '/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml', which is related to frisbee_proxy of NTRC. For example:
#xmpp details
:xmpp:
:username: frisbee_proxy
:password: pw
:server: DOMAIN
#x509 certificates to be used by user_proxy
:auth:
:root_cert_dir: ~/.omf/trusted_roots
:entity_cert: ~/.omf/frisbee_factory.pem
:entity_key: ~/.omf/frisbee_factory.pkey
#operation Mode for OmfCommon.init (development, production, etc)
:operationMode: development
#testbed xmpp topic
:testbedTopic: am_controller
#frisbee and imagezip configuration
:frisbee:
# Directory images are stored
:imageDir: /var/lib/omf-images-6
#defaultImage: orbit-baseline
:defaultImage: baseline.ndz
# max bandwidth for frisbee server
:bandwidth: 50000000
# Multicast address to use for servicing images
#mcAddress: 224.0.0.2
:mcAddress: 224.0.0.1
# Using ports starting at ...
:startPort: 7000
# Time out frisbee server if nobody requested it within TIMEOUT sec
:timeout: 3600
# Directory to find frisbee daemons
:frisbeedBin: /usr/sbin/frisbeed
:frisbeeBin: /usr/sbin/frisbee
:imagezipClientBin: /usr/bin/imagezip
:imagezipServerBin: /bin/nc
# Local interface to bind to for frisbee traffic
#multicastIF: 192.168.204.1
:multicastIF: 10.0.1.200
Important!!! DO NOT modify the file /etc/nitos_testbed_rc/omf_script_conf.yaml. It is a skeleton used by the user_proxy to generate the configuration file for every user it creates.
Finaly, create/modify for each user the configuration file '/home/USERNAME/.omf/etc/omf_script_conf.yaml', which is related to omf6 script of NTRC, every user of the testbed should have his own configuration file in order to use omf6 script.
$ mkdir /home/USERNAME/.omf/etc
$ cp /etc/nitos_testbed_rc/omf_script_conf.yaml /home/USERNAME/.omf/etc
For example:
:xmpp:
:script_user: USERNAME
:password: pw
:server: DOMAIN
:auth:
:root_cert_dir: /etc/nitos_testbed_rc/.omf/trusted_roots
:entity_cert: ~/.omf/user_cert.pem
:entity_key: ~/.ssh/id_rsa
#operation mode for OmfCommon.init (development, production, etc)
:operationMode: development
#omf script configuration
:omf_script:
#default last action on load and save commands (reset or shutdown)
:last_action: reset
Run proxies
To start/stop/restart the upstart service of nitos_testbed_rc use:
$ start ntrc
$ stop ntrc
$ restart ntrc
Starting ntrc as an upstart will generate the following log files:
user rc: /var/log/upstart/ntrc_user.log
frisbee rc: /var/log/upstart/ntrc_frisbee.log
cm rc: /var/log/upstart/ntrc_cm.log
Alternatively (mostly for debugging reasons) you can execute all proxies with one command:
$ run_proxies
Or you run proxies seperatly
$ user_proxy
$ cm_proxy
$ frisbee_proxy
Run omf6 commands
Now you can use omf6 script to execute omf6 related commands
$ omf6 --help