For first time user, create your profile using this github repo:
- Login to your cloudlab account
- Visit this webpage: https://www.cloudlab.us/manage_profile.php
- Click on the button "GitRepo"
- Copy and paste the http form of the repository link and confirm. And then create the profile.
- Create an experiment using the profile you just created.
- Any problem with the use of this project, please shoot your email at x-spirit.zhang@ttu.edu
For first time user, Generate two SSH key pairs on your own computer, with name as 'id_rsa' and 'cloud_rsa' respectively, under '~/.ssh/' directory.
Please refer to https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
Afterwards, add public key 'id_rsa.pub' and 'cloudlab.pub' to your cloudlab account, also you can register 'cloudlab.pub' in your github account.
- Goto
/local/repository
directory to see all the scripts needed in this tutorial. - Note that all of these scripts are targeting CloudLab bare metal machine installing Ubuntu 18.04 operating system.
- All of these scripts suppose that the machines in your cluster are connected by a central hub by which these machines are mutually connected to each other.
./Utils.sh <# of nodes> HOSTS
- Encrypt the key again with your password.
tar cvzf - cloud_rsa | gpg -o accesskeys.tgz.gpg --symmetric
- Copy the file accesskeys.tgz.gpg to your head node.
scp accesskeys.tgz.gpg username@hostname:~/.ssh/
- Login to the head node, decrypt the key and copy it to the node
gpg -d ~/.ssh/accesskeys.tgz.gpg | tar xzvf -
mv cloud_rsa ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
./Utils.sh <# of nodes> PUT ~/.ssh/id_rsa ~/.ssh/
./Utils.sh <# of nodes> TTY 'cd /local/repository; ./Utils.sh <# of nodes> HOSTS'
- For github.com
./Utils.sh <# of nodes> TTY "ssh-keyscan github.com >> ~/.ssh/known_hosts"
- For gitlab.com
./Utils.sh <# of nodes> TTY "ssh-keyscan gitlab.com >> ~/.ssh/known_hosts"
- For bitbucket.com
./Utils.sh <# of nodes> TTY "ssh-keyscan bitbucket.com >> ~/.ssh/known_hosts"
- For gitlab in DISCL:
./Utils.sh <# of nodes> TTY "ssh-keyscan discl.cs.ttu.edu >> ~/.ssh/known_hosts"
./Utils.sh <# of nodes> TTY "bash /local/repository/secure/secure.sh"
./Utils.sh <# of nodes> LIMIT
- For
c220g2
Machines:
./Utils.sh <# of nodes> TTY "cd /local/repository/fdisk/; sudo bash ./c220g2.sh"
- For
m510
Machines:
./Utils.sh <# of nodes> TTY "cd /local/repository/fdisk/; sudo bash ./m510.sh"
And you will be all set!
- For
m400
Machines:
./Utils.sh <# of nodes> TTY "cd /local/repository/fdisk/; sudo bash ./m400.sh sda"
- Note: The m400 machine will reboot after new partition is created. You should login the head machine after it is rebooted and do the following :
./Utils.sh <# of nodes> TTY "cd /local/repository/fdisk/; sudo bash ./formatNmount.sh sda2"
- For
r320
Machine:
./Utils.sh <# of nodes> TTY "cd /local/repository/fdisk/; sudo bash ./r320.sh sdb"
./Utils.sh <# of nodes> TTY "cd /local/repository/fdisk/; sudo bash ./formatNmount.sh sdb1"
./Utils.sh <# of nodes> TTY "sudo shutdown -r now"
./Utils.sh <# of nodes> TTY "ulimit -a"
./Utils.sh <# of nodes> TTY "df -h | grep /data ; ls -l /data | grep 'software'"
./Utils.sh <# of nodes> CMD "nohup bash /local/repository/installation/install.sh > ~/nohup.out &"
Keep running tail -f ~/nohup.out
on head node until no new lines are printed on your terminal, which means the installation process stops.
Then you run the following command again and again until you see nothing for each node.
./Utils.sh <# of nodes> TTY "ps -ef | grep apt | grep -v grep"
That means, on each node of the cluster, the apt package manager is stopped.
./Utils.sh <# of nodes> TTY "cd /local/repository; bash ./installation/docker.sh"
./Utils.sh <# of nodes> TTY "cd /local/repository/installation; bash ./shell_enhance.sh (fish/bash/zsh/bashit)"
./Utils.sh <# of nodes> TTY "bash /local/repository/installation/java.sh"
./Utils.sh <# of nodes> TTY "bash /local/repository/installation/node.sh <armv6l|armv7l|arm64|x86|x64>"
./Utils.sh <# of nodes> TTY "bash /local/repository/installation/redis.sh"
./Utils.sh <# of nodes> TTY "bash /local/repository/installation/mysql.sh"
./Utils.sh <# of nodes> TTY "bash /local/repository/installation/metis.sh"