From 8ec17830e3cb48c82970deb0effea60f9375220c Mon Sep 17 00:00:00 2001 From: Sean Wellington Date: Tue, 7 Feb 2017 21:17:21 -0500 Subject: [PATCH] Fixes errors in channel_test.sh Following the instructions in /docs/gettingstarted.md creates a fabric deployment that continuously logs errors related to security settings. These can be corrected by creating the channel with: 1. CORE_PEER_GOSSIP_IGNORESECURITY=true 2. An anchor file with the certificate associated with peer0 As the IP address of peer0 isn't known ahead of time, we need to generate the anchor file dynamically. This commit updates the script and the tarball referenced in the documentation. Change-Id: Id236c64f5c4ed98981ac33b16083765c2de23301 Signed-off-by: Sean Wellington Signed-off-by: Ramesh babu --- examples/sfhackfest/channel_test.sh | 27 +++++++++++++++++- .../docker-compose-gettingstarted.yml | 6 ++-- examples/sfhackfest/sfhackfest.tar.gz | Bin 10266 -> 11035 bytes 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/examples/sfhackfest/channel_test.sh b/examples/sfhackfest/channel_test.sh index 919c5468ffb..8fe0a3be745 100644 --- a/examples/sfhackfest/channel_test.sh +++ b/examples/sfhackfest/channel_test.sh @@ -1,8 +1,33 @@ #!/bin/sh +# find address of peer0 in your network +PEER0_IP_ADDRESS=`perl -e 'use Socket; $a = inet_ntoa(inet_aton("peer0")); print "$a\n";'` + +# create an anchor file +cat<anchorPeer.txt +$PEER0_IP_ADDRESS +7051 +-----BEGIN CERTIFICATE----- +MIICjDCCAjKgAwIBAgIUBEVwsSx0TmqdbzNwleNBBzoIT0wwCgYIKoZIzj0EAwIw +fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh +biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK +BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMTExMTcwNzAw +WhcNMTcxMTExMTcwNzAwWjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGgg +Q2Fyb2xpbmExEDAOBgNVBAcTB1JhbGVpZ2gxGzAZBgNVBAoTEkh5cGVybGVkZ2Vy +IEZhYnJpYzEMMAoGA1UECxMDQ09QMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +HBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3xCPQtdG/XJJvZ ++C756KEsUBM3yw5PTfku8qOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw +FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOFC +dcUZ4es3ltiCgAVDoyLfVpPIMB8GA1UdIwQYMBaAFBdnQj2qnoI/xMUdn1vDmdG1 +nEgQMCUGA1UdEQQeMByCCm15aG9zdC5jb22CDnd3dy5teWhvc3QuY29tMAoGCCqG +SM49BAMCA0gAMEUCIDf9Hbl4xn3z4EwNKmilM9lX2Fq4jWpAaRVB97OmVEeyAiEA +25aDPQHGGq2AvhKT0wvt08cX1GTGCIbfmuLpMwKQj38= +-----END CERTIFICATE----- +EOF + #create echo "Creating channel on Orderer" -CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/msp/sampleconfig CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1 >>log.txt 2>&1 +CORE_PEER_GOSSIP_IGNORESECURITY=true CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/msp/sampleconfig CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1 -a anchorPeer.txt >>log.txt 2>&1 cat log.txt grep -q "Exiting" log.txt if [ $? -ne 0 ]; then diff --git a/examples/sfhackfest/docker-compose-gettingstarted.yml b/examples/sfhackfest/docker-compose-gettingstarted.yml index 9078c361161..6afb0be6702 100644 --- a/examples/sfhackfest/docker-compose-gettingstarted.yml +++ b/examples/sfhackfest/docker-compose-gettingstarted.yml @@ -45,8 +45,6 @@ services: - ORDERER_GENERAL_LISTENPORT=7050 - ORDERER_RAMLEDGER_HISTORY_SIZE=100 working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer - volumes: - - ./tmp/orderer:/etc/hyperledger/fabric/orderer command: orderer ports: - 8050:7050 @@ -70,6 +68,8 @@ services: - CORE_PEER_GOSSIP_IGNORESECURITY=true working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer + + command: peer node start --peer-defaultchain=false ports: - 8051:7051 - 8053:7053 @@ -166,7 +166,7 @@ services: #in the "- :/opt/gopath/src/github.com/hyperledger/fabric/examples/" mapping below, the HOST part #should be modified to the path on the host. This will work as is in the Vagrant environment - ./src/github.com/example_cc/example_cc.go:/opt/gopath/src/github.com/hyperledger/fabric/examples/example_cc.go - - ./tmp/peer3/:/etc/hyperledger/fabric/msp/sampleconfig + - ./tmp/peer3:/etc/hyperledger/fabric/msp/sampleconfig - ./channel_test.sh:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel_test.sh networks: - bridge diff --git a/examples/sfhackfest/sfhackfest.tar.gz b/examples/sfhackfest/sfhackfest.tar.gz index 63dde622c4c4b2dfe941aa3715150a67b287affc..6b98a4386667672639dab50caf0dfd54c975045d 100644 GIT binary patch literal 11035 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 literal 10266 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