Tip |
---|
Step - by - step guide on how to Install Insights Advanced - Hyperledger Fabric Network. |
Installing Hyperledger Network covers the initial setup procedures including Installation, Configurations (Hardware, Software, and Network) and various Commands. Please note that these instructions are only for Linux (RHEL 7).
Prerequisites
title | Hardware Configuration |
---|
Note |
---|
Configuration varies depending on the work load. |
title | Software |
---|
- Docker version 18.03 or later, Docker Compose 1.14.0 or greater (If not, we recommend that you install a more recent version of Docker) , curl
- Python 3.x
- Node.js Runtime 8.x(8.12.0) and NPM 6.x(6.3.0) - For chaincode
- git (git bash to clone the repo)
- wget
Tip |
---|
Step - by - step guide on how to Install Insights Advanced - Hyperledger Fabric Network. |
Installing Hyperledger Network covers the initial setup procedures including Installation, Configurations (Hardware, Software, and Network) and various Commands. Please note that these instructions are only for Linux (RHEL 7).
Prerequisites
Expand | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
|
Expand | ||
---|---|---|
| ||
Refer the link to know the Software component version for latest fabric network: https://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html Fabric Version Specific. Change the version in the URL for other versions: https://hyperledger-fabric.readthedocs.io/en/latestrelease-1.4/prereqs.html Fabric Version Specific. Change the version in the URL for other versions: https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html Docker, Docker Compose and curlOnDocker, Docker Compose and curlOn RHEL/CentOS7:Docker - https://docs.docker.com/engine/install/centos/
vi /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock :wq
Example: usermod -aG docker ec2-user
Docker Compose
Reference: https://docs.docker.com/install/linux/docker-ce/ubuntu/ cURLDownload the latest version of cURL (curl) tool if it is not installed - https://curl.haxx.se/download.html GO
PythonAs of Ubuntu 16.04 LTS (xenial), both python 2 and python3 by default. Recommended to use python3. Check and then install if required.
set alias to respectiive python version in ~/.bashrc to avoid error while installing the module. alias pip=pip3 alias python=python3.5 (OR) update-alternatives --install /usr/bin/python python /usr/bin/python3.5 10 Reference: https://wiki.ubuntu.com/Python Node.js Runtime and NPM |
Expand | ||||
---|---|---|---|---|
|
| |||
Environment variable INSIGHTS_HOME and $INSIGHTS_HOME/.InSights/server-config.json
Refer here for installation steps if required. |
Expand | ||
---|---|---|
| ||
Following port must be opened to access the fabric network from fabric sdk. Source : fabric sdk instance where our Insights is running Destination: fabric network installed instance - hyperledger network Example Ports: You can change these ports based on availability and configuration in fabric network. Then, enable connectivity to those ports.
|
Expand | ||
---|---|---|
| ||
List active container: docker ps List active/exited container: docker ps -a List docker images: docker images Check container logs: docker logs <container-id> Connect to Container: docker exec -it <container-id> bash Remove docker container: docker rmi -f <contianer-id> Remove docker images: docker rmi -f <image-name/id> Reference: https://docs.docker.com/engine/reference/commandline/docker/ |
Expand | ||
---|---|---|
|
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Make sure you've done all the Prerequisites. Raft Ordering Service introduced in 1.4.1 (Reference: https://hyperledger-fabric.readthedocs.io/en/latest//whatsnew.html) Ensure docker images are pulled as per raft supported version ( https://github.com/hyperledger/fabric/releases ) Network Architecture
Setup the Network
Verify if all the docker containers are running: docker ps -a
|
Panelexpand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Expand | ||||||||||
|
Info | ||
---|---|---|
| ||
Architecture - https://hyperledger-fabric.readthedocs.io/en/latest/architecture.html |
/home/ec2-user/hyperledger/insights-fabric-network/insights-network/.env
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
COMPOSE_PROJECT_NAME=hyperledger
IMAGE_TAG=latest
SYS_CHANNEL=system-channel
DOMAIN=<yourdomain> |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network
./network.sh up -ca -s couchdb -i 2.2.0 -cai 1.4.8 |
network.sh internally calls the required scripts to perform the following actions: TLS Enabled, required certs, register and enroll users (fabric-ca) - both admin and other users;- these details required to connect from Java sdk while connecting network , pull necessary docker images and start the containers.
Verify if all the docker containers are running:
docker ps -a
Create channel. Following script will create channel , join and update for all peers.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network
./network.sh createChannel -c insightschannel |
Info | ||
---|---|---|
| ||
Change permission/ownership to non-root user for the directory channel-artifacts if you face any issues in channel creation due to permissions restricted by root user. |
Copy (Specify github location for chaincode) the chaincode/contract to the directory /home/ec2-user/hyperledger/insights-fabric-network/insights-network. Directory structure after chaincode copy is : /home/ec2-user/hyperledger/insights-fabric-network/insights-network/chaincode/src/nodejs
Deploy Smart Contract (Chaincode): Run the following command to deploy the smart contract/chaincode.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
cd /home/ec2-user/hyperledger/insights-fabric-network/insights-network
./network.sh deployCC -ccn insightsaudit -ccp ./chaincode/src/nodejs/ -ccv 1 -ccl javascript |
Note: ccl parameter can either javascript or typescript. Both will refer to CC_RUNTIME_LANGUAGE=node inside scripts/deployCC.sh file
Info |
---|
You will notice some extra containers running other than the ones mentioned in the network architecture with names like this: dev-peer0.org1.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx , dev-peer1.org1.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx, dev-peer0.org2.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx , dev-peer1.org2.<yourdomain>-insightsaudit_1-xxxxxxxxxxxxxxxx . It is an expected behavior for the fabric-network. These containers will get spawned whenever chaincode is instantiated(deployed) in a peer. |
Set the environments in host machine where you have deployed your network(Don't to get into any peer container). to operate via Org1 or Org2.
Info | ||
---|---|---|
| ||
Set either ORG1 or ORG2 in one terminal. Open 2 terminal window then set ORG1 in first terminal and Org2 in second terminal. If you attempt to set continuously then latest one will override all the previous ones. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
export PATH=${PWD}/../bin:${PWD}:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.<yourdomain>/peers/peer0.org1.<yourdomain>/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.<yourdomain>/users/Admin@org1.<yourdomain>/msp
export CORE_PEER_ADDRESS=localhost:7051 |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
export PATH=${PWD}/../bin:${PWD}:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.<yourdomain>/peers/peer0.org2.<yourdomain>/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.<yourdomain>/users/Admin@org2.<yourdomain>/msp
export CORE_PEER_ADDRESS=localhost:9051 |
Info | ||
---|---|---|
| ||
Latest fabric version has feature to execute peer lifecycle commands in host machine itself by setting respective org env variables as specified above. |
Sanity testing. Test the Chaincode. Either insert record manually or let the data gets inserted via PlatformEngine with digitalSignature validation. Use the following command to verify network and smart contract functionality are deployed successfully or not.
Before executing the below command in host machine. You must have either ORG1 admin env variables or ORG2 admin env variables set in the terminal.
Manual insertion and read:
Code Block | ||||
---|---|---|---|---|
| ||||
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer0.<yourdomain> -C insightschannel -n insightsaudit --tls --cafile ${PWD}/organizations/ordererOrganizations/<yourdomain>/orderers/orderer0.<yourdomain>/msp/tlscacerts/tlsca.<yourdomain>-cert.pem --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.<yourdomain>/peers/peer0.org1.<yourdomain>/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.<yourdomain>/peers/peer0.org2.<yourdomain>/tls/ca.crt -c '{"Args":["Instantiate","{\"almAssetID\":\"IN-1\",\"property\":\"ALM\",\"phase\":\"Plan\",\"toolName\":\"JIRA\",\"toolstatus\":\"Done\",\"priority\":\"Medium\",\"sprintNames\":[\"IN Sprint 1\"],\"issueType\":\"Story\",\"attachments\":\"https://<jirahostnameurl>/secure/attachment/10017/test.txt\",\"projectName\":\"InsightsAuditing Testing\",\"createdTime\": 1557741850.0,\"issueAPI\": \"https://bcdevops.atlassian.net/rest/api/2/issue/10013\",\"timestamp\":1557751850.0,\"date\":\"2019-05-13\",\"uplink\":\"null\",\"downlink\":{\"jiraKeys\":\"IN-1\"}}"]}' |
language | bash |
---|---|
title | Read from Smart Contract - insightsaudit |
Java SDK to connect hyperledger fabric network |
Prerequisites:
- Fabric network must be running and with smart contract/chaincode deployed into it, to establish the fabric network connection from fabric Java sdk.
- Required network ports must be opened (Refer: "Recommended Network Ports" section in this page)
Configuration Steps:
- Download connections-tls.json from Nexus3 docroot repo and keep it inside the instance where our Insights application is running. Path: $INSIGHTS_HOME/.InSights/connections-tls.json
- Keep the required certs inside the path $INSIGHTS_HOME/.InSights/BlockChainCerts/etcdraft-certs. Certs generated while creating fabric network.
- Update the path of the json and certs locations in connections-tls.json.
- Replace <yourdomain> by your actual domain name. (For example: orderer0.example.com)
- Update enrollSecret value which is password for ca-org1 and ca-org2.
- Finally, keep this updated connections-tls.json inside the path INSIGHTS_HOME. Parallel to server-config.json
- Download other config files datamodel.json and Process.json used for logic construction. Keep these files inside the path INSIGHTS_HOME. Parallel to server-config.json
Config files | Explanation |
---|---|
datamodel.json | |
Process.json |
- Set flag as true for AuditEngine in "server-config.json" as mentioned below:
Info |
---|
{ "enableAuditEngine":true, } |
- Set flag as true for "showAuditReporting" in uiConfig.json (Path: TOMCAT/webapps/app/config/uiConfig.json) as mentioned below to enable the "Audit Reporting" in UI.
Info |
---|
{ "showAuditReporting": true, } |
- Restart Tomcat service for the changes to be refreshed in Insights application.
- Restart PlatformEngine for the engine to include audit/hyperledger functionalities.
Expand | |||||
---|---|---|---|---|---|
| |||||
Prerequisites:
Configure digitalSignature:
The tool agents(written in python) will perform the following:
PlatformEngine with Audit enabled does the following:
|