# 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.
This work is licensed under a
Creative Commons Attribution 4.0 International License.