-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_su.sh
More file actions
124 lines (84 loc) · 7.4 KB
/
deploy_su.sh
File metadata and controls
124 lines (84 loc) · 7.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# SPDX-License-Identifier: Apache-2.0
#set -ev
#!/bin/sh
function exportVariables(){
# Organization information that you wish to build and deploy
export NAME_OF_ORGANIZATION=$NAME_OF_ORGANIZATION
export DOMAIN_OF_ORGANIZATION=$DOMAIN_OF_ORGANIZATION
export HOST_COMPUTER_IP_ADDRESS=$HOST_COMPUTER_IP_ADDRESS
export ORGANIZATION_NAME_LOWERCASE=`echo "$NAME_OF_ORGANIZATION" | tr '[:upper:]' '[:lower:]'`
export CA_ADDRESS_PORT=ca.$DOMAIN_OF_ORGANIZATION:7054
# Security defaults
# Couch DB credentials
export COUCH_DB_USERNAME=admin
export COUCH_DB_PASSWORD=adminpw
# Certificate authority credentials
export CA_ADMIN_USER=admin
export CA_ADMIN_PASSWORD=adminpw
# Orderer credentials
ORDERER_PASSWORD=adminpw
# Peer credentials
PEER_PASSWORD=peerpw
export CHANNEL_NAME="communitychannel"
export CC_NAME="basic"
export CC_VERSION="1.0"
export CC_SEQUENCE="1"
export CC_SRC_PATH="/home/aimaster-dev/Downloads/hyperledger-fabric-generic-network/fabric-join/chaincode-sample"
export CC_RUNTIME_LANGUAGE="golang"
}
read -p "Organization Name: " NAME_OF_ORGANIZATION
read -p "Organization Domain: " DOMAIN_OF_ORGANIZATION
read -p "Computer IP Address: " HOST_COMPUTER_IP_ADDRESS
exportVariables
# Substitutes organizations information in the configtx template to match organizations name, domain and ip address
sed -e 's/organization_name/'$NAME_OF_ORGANIZATION'/g' -e 's/organization_domain/'$DOMAIN_OF_ORGANIZATION'/g' -e 's/ip_address/'$HOST_COMPUTER_IP_ADDRESS'/g' configtx_template.yaml > configtx.yaml
# Start the certificate authority
docker-compose -p fabric-network -f docker-compose.yml up -d ca
sleep 3
docker exec ca.$DOMAIN_OF_ORGANIZATION /bin/sh -c "cd /etc/hyperledger/artifacts/ && ./orderer-identity.sh $CA_ADDRESS_PORT $DOMAIN_OF_ORGANIZATION $HOST_COMPUTER_IP_ADDRESS $CA_ADMIN_USER $CA_ADMIN_PASSWORD $ORDERER_PASSWORD"
# Generate identity and cryptographic materials for the peer
docker exec ca.$DOMAIN_OF_ORGANIZATION /bin/sh -c "cd /etc/hyperledger/artifacts/ && ./peer-identity.sh $CA_ADDRESS_PORT $DOMAIN_OF_ORGANIZATION $HOST_COMPUTER_IP_ADDRESS $PEER_PASSWORD"
# Move the crypto-config folder to manipulate it more easily away from the docker users' restrictions
su - root -c "mv ./${ORGANIZATION_NAME_LOWERCASE}Ca/client/crypto-config ./"
su - root -c "chmod -R 777 ./crypto-config"
# Move TLS certificates for the orderer
ORDERER_DIRECTORY=./crypto-config/ordererOrganizations/orderers
su - root -c "mv $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/signcerts/cert.pem $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/server.crt"
su - root -c "mv $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/keystore/*_sk $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/server.key"
su - root -c "mv $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/tlscacerts/*.pem $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt"
su - root -c "rm -rf $ORDERER_DIRECTORY/orderer.$DOMAIN_OF_ORGANIZATION/tls/{cacerts,keystore,signcerts,tlscacerts,user}"
# Peers crypto-config directory
PEER_DIRECTORY=./crypto-config/peerOrganizations/peers/peer.$DOMAIN_OF_ORGANIZATION
# Move the Peer TLS files to match cryptogen hierarchy
su - root -c "mv $PEER_DIRECTORY/tls/signcerts/cert.pem $PEER_DIRECTORY/tls/server.crt"
su - root -c "mv $PEER_DIRECTORY/tls/keystore/*_sk $PEER_DIRECTORY/tls/server.key"
su - root -c "mv $PEER_DIRECTORY/tls/tlscacerts/*.pem $PEER_DIRECTORY/tls/ca.crt"
su - root -c "rm -rf $PEER_DIRECTORY/tls/{cacerts,keystore,signcerts,tlscacerts,user}"
./generate.sh ${ORGANIZATION_NAME_LOWERCASE}channel $NAME_OF_ORGANIZATION
sleep 2
# Start the network with docker-compose
docker-compose -f docker-compose.yml up -d peer couchdb cli orderer
sleep 2
docker exec cli osnadmin channel join -o orderer.$DOMAIN_OF_ORGANIZATION:7053 --channelID ${ORGANIZATION_NAME_LOWERCASE}channel --config-block /etc/hyperledger/artifacts/channel.tx --ca-file /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt --client-cert /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/server.crt --client-key /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/server.key
sleep 3
docker exec cli peer channel fetch 0 channel.block -c ${ORGANIZATION_NAME_LOWERCASE}channel -o orderer.${DOMAIN_OF_ORGANIZATION}:7050 --tls --cafile /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.${DOMAIN_OF_ORGANIZATION}/tls/ca.crt
docker exec cli peer channel join -b channel.block
mkdir identityFiles
# Generate json identities to send to admin org to enter a channel
./configtxgen -printOrg ${NAME_OF_ORGANIZATION}MSP > identityFiles/${NAME_OF_ORGANIZATION}MSP.json
./configtxgen -printOrg ${NAME_OF_ORGANIZATION}OrdererMSP > identityFiles/${NAME_OF_ORGANIZATION}OrdererMSP.json
cp crypto-config/ordererOrganizations/orderers/orderer.${DOMAIN_OF_ORGANIZATION}/tls/server.crt identityFiles/
tar -czvf $NAME_OF_ORGANIZATION.tar.gz identityFiles/
mkdir config
cp basic.tar.gz config/
docker exec cli peer lifecycle chaincode install artifacts/basic.tar.gz
docker exec cli peer lifecycle chaincode queryinstalled >&log.txt
export PACKAGE_ID=`sed -n '/Package/{s/^Package ID: //; s/, Label:.*$//; p;}' log.txt`
echo $PACKAGE_ID
docker exec cli peer lifecycle chaincode approveformyorg -o orderer.$DOMAIN_OF_ORGANIZATION:7050 --ordererTLSHostnameOverride orderer.$DOMAIN_OF_ORGANIZATION --channelID ${ORGANIZATION_NAME_LOWERCASE}channel --name chaincode --version 1.0 --sequence 1 --tls --cafile /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt --package-id ${PACKAGE_ID}
docker exec cli peer lifecycle chaincode checkcommitreadiness --channelID ${ORGANIZATION_NAME_LOWERCASE}channel --name chaincode --version 1.0 --sequence 1 --tls true --cafile /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt --output json
docker exec cli peer lifecycle chaincode commit -o orderer.$DOMAIN_OF_ORGANIZATION:7050 --channelID ${ORGANIZATION_NAME_LOWERCASE}channel --name chaincode --version 1.0 --sequence 1 --tls true --cafile /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt --peerAddresses peer.$DOMAIN_OF_ORGANIZATION:7051 --tlsRootCertFiles /etc/hyperledger/crypto-config/peerOrganizations/peers/peer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt
docker exec cli peer chaincode invoke -o orderer.$DOMAIN_OF_ORGANIZATION:7050 -C ${ORGANIZATION_NAME_LOWERCASE}channel -n chaincode -c '{"function":"RegisterUser","Args":["user1", "ID001", "Initial Activity"]}' --tls --cafile /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt
docker exec cli peer lifecycle chaincode queryinstalled --peerAddresses peer.$DOMAIN_OF_ORGANIZATION:7051 --tlsRootCertFiles /etc/hyperledger/crypto-config/peerOrganizations/peers/peer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt
docker exec cli peer lifecycle chaincode querycommitted -o orderer.$DOMAIN_OF_ORGANIZATION:7050 --channelID ${ORGANIZATION_NAME_LOWERCASE}channel --tls --cafile /etc/hyperledger/crypto-config/ordererOrganizations/orderers/orderer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt --peerAddresses peer.$DOMAIN_OF_ORGANIZATION:7051 --tlsRootCertFiles /etc/hyperledger/crypto-config/peerOrganizations/peers/peer.$DOMAIN_OF_ORGANIZATION/tls/ca.crt
echo NETWORK DEPLOYMENT COMPLETED SUCCESSFULLY