# Run everything on one clean Ubuntu server As a developer, you might like to run everything on one machine by following the steps below to stand up a fabric network. At present, Ubuntu servers are the target operating systems that Fabric uses. For any other operating system, you may have to resolve some issues related to installation commands. The following steps work on Ubuntu 17.04 server. If you are using a different version of Ubuntu server, the steps should be very similar other than some dependency differences; for example, earlier Ubuntu server versions do not have git installed, so you may have to install git as well. Please follow the below steps to stand up an all-in-one fabric system ## Install dependencies and clone cello Use a clean Ubuntu system, login as a user who can do `sudo su` without prompting password, and run the following commands to install necessary dependencies, grant current user docker permissions and clone the cello project into the current user home directory:: sudo apt-get update sudo apt-get install python-dev python-pip libssl-dev libffi-dev docker.io -y sudo pip install 'ansible>=2.3.0.0' sudo gpasswd -a $USER docker cd ~ && git clone https://gerrit.hyperledger.org/r/cello ## Setup ssh key pair and key ssh login mkdir -p ~/.ssh && cd ~/.ssh && ssh-keygen -t rsa -f fd -P "" cat ~/.ssh/fd.pub >> ~/.ssh/authorized_keys The above commands create a key pair named fd and fd.pub. If you choose to use other names, you will need to make sure these names are used in ~/cello/src/agent/ansible/vars/vb.yml and bc2nd.yml file in steps below. Files vb.yml and bc2nd.yml use fd and fd.pub as the default value for ssh key pairs. ## Log out, log back in and setup ssh agent eval $(ssh-agent -s) && ssh-add ~/.ssh/fd The above command create a ssh-agent so that you do not have to provide ssh keys in your current session when you try to establish a ssh connection, Notice that this only establish a ssh-agent for current session. If you log out and back in, you will have to run the above command again. ## Create runhosts file Create a run directory ~/cello/src/agent/ansible mkdir -p ~/cello/src/agent/ansible/run Create file ~/cello/src/agent/ansible/run/runhosts.tpl with the following content cloud ansible_host=127.0.0.1 ansible_python_interpreter=python $ip private_ip=$ip public_ip=$ip inter_name=fabric001 [allnodes] $ip [etcdnodes] $ip [builders] $ip Change your working directory to ~/cello/src/agent/ansible and run the following commands to create runhosts file for your environment. ipaddr=$(ip -4 addr show | awk -F '/' '/inet / {print $1}' | grep -v '127.0.0.1' | awk -F ' ' '{print $2;exit}') sed "s/\$ip/$ipaddr/g" run/runhosts.tpl > run/runhosts ## Stand up the fabric network Then run the following two commands to stand up fabric network. If you are using different user id, then you will need to change the ssh_user in both vb.yml and vb2nd.yml file in ~/cello/src/agent/ansible directory to match your user id:: ansible-playbook -i run/runhosts -e "mode=apply env=vb" initcluster.yml --skip-tags="resetconn" ansible-playbook -i run/runhosts -e "mode=apply env=bc2nd" setupfabric.yml ## Destroy the fabric network To get rid of the fabric network, you can simply do the following: ansible-playbook -i run/runhosts -e "mode=destroy env=bc2nd" setupfabric.yml ansible-playbook -i run/runhosts -e "mode=destroy env=vb" initcluster.yml Notice that the commands are in reverse order of the commands in previous step. Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.