zoukankan      html  css  js  c++  java
  • fabric-network_setup.sh安装脚本分析

    在进行镜像安装前,提供了一个sample脚本的下载,可以使用该脚本进行容器的启停。这里对该脚本进行分析。

     fabric/release/linux-amd64/network_setup.sh

        脚本提供了四个参数项目,

    UP_DOWN="$1"
    CH_NAME="$2"
    CLI_TIMEOUT="$3"
    IF_COUCHDB="$4"
    
    : ${CLI_TIMEOUT:="10000"}

        第一个:up down restart参数:可以进行容器的启停,这里主要关注up,也就是了解容器是如何拉起的。

        第二个:字符串参数:通道名称,这里与fabric多通道有关

        第三个:数值:管理工具超时时间(单位不明)

        第四个:couchdb或'':  是否使用COUCHDB(CouchDB 是一个开源的面向文档的数据库管理系统)

    执行up后,首先调用networkUp函数。之后转到generateArtifacts.sh脚本

    function networkUp () {
        #Generate all the artifacts that includes org certs, orderer genesis block,
        # channel configuration transaction
        source generateArtifacts.sh $CH_NAME

    解析generateArtifacts.sh执行过程
    注:这块涉及到了证书相关的内容
       ca证书 
       Membership Service Providers (MSP)                 https://fabric-rtd.readthedocs.io/en/latest/msp.html
       x.509 certificates and public key infrastructure   https://en.wikipedia.org/wiki/Public_key_infrastructure
       后续再进行研究
      function generateCerts ()
    首先使用cryptogen工具生成密钥,密钥的生成模版为crypto-config.yam文件
    $CRYPTOGEN generate --config=./crypto-config.yaml
    等同与
    cd/opt/fabric/release/linux-amd64/
    bin/cryptogen generate --config=./crypto-config.yaml

    crypto-config.yaml文件内容,根据这个定义结构,生成下面的密钥认证目录和文件
    OrdererOrgs:
      - Name: Orderer
        Domain: example.com
        Specs:
          - Hostname: orderer
    PeerOrgs:
      - Name: Org1
        Domain: org1.example.com
        Template:
          Count: 2
        Users:
          Count: 1
      - Name: Org2
        Domain: org2.example.com
        Template:
          Count: 2
        Users:
          Count: 1
    
    

    可以执行该命令,生成生成的目录结构,如果反复执行,一些目录下会多次生成密钥

    密钥的存储地址为:/opt/fabric/release/linux-amd64/crypto-config

    使用tree crypto-config查看目录下的文件结构
    crypto-config
    ├── ordererOrganizations
    │   └── example.com
    │       ├── ca
    │       │   ├── 0f63cc42f0f1fcf00a89ddd3b5da0936503c46802a07dbe45ff12882e78edf32_sk
    │       │   └── ca.example.com-cert.pem
    │       ├── msp
    │       │   ├── admincerts
    │       │   │   └── Admin@example.com-cert.pem
    │       │   ├── cacerts
    │       │   │   └── ca.example.com-cert.pem
    │       │   ├── keystore
    │       │   └── signcerts
    │       │       └── ca.example.com-cert.pem
    │       ├── orderers
    │       │   └── orderer.example.com
    │       │       ├── msp
    │       │       │   ├── admincerts
    │       │       │   │   └── Admin@example.com-cert.pem
    │       │       │   ├── cacerts
    │       │       │   │   └── ca.example.com-cert.pem
    │       │       │   ├── keystore
    │       │       │   │   └── 8b24878c3b0d92bfbb58db333d0ff3cb15b7d4b27401e3f40a8efa6bd2d4df05_sk
    │       │       │   └── signcerts
    │       │       │       └── orderer.example.com-cert.pem
    │       │       └── tls
    │       │           ├── ca.crt
    │       │           ├── server.crt
    │       │           └── server.key
    │       └── users
    │           └── Admin@example.com
    │               ├── msp
    │               │   ├── admincerts
    │               │   │   └── ca.example.com-cert.pem
    │               │   ├── cacerts
    │               │   │   └── ca.example.com-cert.pem
    │               │   ├── keystore
    │               │   │   └── f11e42721d96e1dd5408f33a81dd74759a9d1ca294cc1dade6b8bf7b48dc1c9a_sk
    │               │   └── signcerts
    │               │       └── Admin@example.com-cert.pem
    │               └── tls
    │                   ├── ca.crt
    │                   ├── server.crt
    │                   └── server.key
    └── peerOrganizations
        ├── org1.example.com
        │   ├── ca
        │   │   ├── 94cbaa1ffab32105d323007ffe831bbc14be58d31b1e8e534fc48c8dfa405ef1_sk
        │   │   └── ca.org1.example.com-cert.pem
        │   ├── msp
        │   │   ├── admincerts
        │   │   │   └── Admin@org1.example.com-cert.pem
        │   │   ├── cacerts
        │   │   │   └── ca.org1.example.com-cert.pem
        │   │   ├── keystore
        │   │   └── signcerts
        │   │       └── ca.org1.example.com-cert.pem
        │   ├── peers
        │   │   ├── peer0.org1.example.com
        │   │   │   ├── msp
        │   │   │   │   ├── admincerts
        │   │   │   │   │   └── Admin@org1.example.com-cert.pem
        │   │   │   │   ├── cacerts
        │   │   │   │   │   └── ca.org1.example.com-cert.pem
        │   │   │   │   ├── keystore
        │   │   │   │   │   └── e300201ec6785972a88f89d6586ed913d46d228d6cb2fe0a7043a46a61dd4402_sk
        │   │   │   │   └── signcerts
        │   │   │   │       └── peer0.org1.example.com-cert.pem
        │   │   │   └── tls
        │   │   │       ├── ca.crt
        │   │   │       ├── server.crt
        │   │   │       └── server.key
        │   │   └── peer1.org1.example.com
        │   │       ├── msp
        │   │       │   ├── admincerts
        │   │       │   │   └── Admin@org1.example.com-cert.pem
        │   │       │   ├── cacerts
        │   │       │   │   └── ca.org1.example.com-cert.pem
        │   │       │   ├── keystore
        │   │       │   │   └── e38cc67f6a49fd60aa44acc8fd328f00778b3df4868b2bfb8e254141d75e9a73_sk
        │   │       │   └── signcerts
        │   │       │       └── peer1.org1.example.com-cert.pem
        │   │       └── tls
        │   │           ├── ca.crt
        │   │           ├── server.crt
        │   │           └── server.key
        │   └── users
        │       ├── Admin@org1.example.com
        │       │   ├── msp
        │       │   │   ├── admincerts
        │       │   │   │   └── ca.org1.example.com-cert.pem
        │       │   │   ├── cacerts
        │       │   │   │   └── ca.org1.example.com-cert.pem
        │       │   │   ├── keystore
        │       │   │   │   └── 10c59c2596366e4a6e1046120a10a7977c019458786ac86b3f99d64474c97529_sk
        │       │   │   └── signcerts
        │       │   │       └── Admin@org1.example.com-cert.pem
        │       │   └── tls
        │       │       ├── ca.crt
        │       │       ├── server.crt
        │       │       └── server.key
        │       └── User1@org1.example.com
        │           ├── msp
        │           │   ├── admincerts
        │           │   │   └── ca.org1.example.com-cert.pem
        │           │   ├── cacerts
        │           │   │   └── ca.org1.example.com-cert.pem
        │           │   ├── keystore
        │           │   │   └── 78730dac6a0358428e3556275567883bc1c7e818875a9925f4e7c1517053f438_sk
        │           │   └── signcerts
        │           │       └── User1@org1.example.com-cert.pem
        │           └── tls
        │               ├── ca.crt
        │               ├── server.crt
        │               └── server.key
        └── org2.example.com
            ├── ca
            │   ├── 683f20c00dd655b5ed6073098c62acbd1efa660d9f5f585258a3a4e61739ef9c_sk
            │   └── ca.org2.example.com-cert.pem
            ├── msp
            │   ├── admincerts
            │   │   └── Admin@org2.example.com-cert.pem
            │   ├── cacerts
            │   │   └── ca.org2.example.com-cert.pem
            │   ├── keystore
            │   └── signcerts
            │       └── ca.org2.example.com-cert.pem
            ├── peers
            │   ├── peer0.org2.example.com
            │   │   ├── msp
            │   │   │   ├── admincerts
            │   │   │   │   └── Admin@org2.example.com-cert.pem
            │   │   │   ├── cacerts
            │   │   │   │   └── ca.org2.example.com-cert.pem
            │   │   │   ├── keystore
            │   │   │   │   └── 000e0b35ff61c8e2c07f516346daf11aeabe5d0f5b6914c179ff11ad7c4f678e_sk
            │   │   │   └── signcerts
            │   │   │       └── peer0.org2.example.com-cert.pem
            │   │   └── tls
            │   │       ├── ca.crt
            │   │       ├── server.crt
            │   │       └── server.key
            │   └── peer1.org2.example.com
            │       ├── msp
            │       │   ├── admincerts
            │       │   │   └── Admin@org2.example.com-cert.pem
            │       │   ├── cacerts
            │       │   │   └── ca.org2.example.com-cert.pem
            │       │   ├── keystore
            │       │   │   └── 55d455f9d1bf47f0320484b322791f43e94d8e7e5e8ed8383f7daf1adeb2c2d2_sk
            │       │   └── signcerts
            │       │       └── peer1.org2.example.com-cert.pem
            │       └── tls
            │           ├── ca.crt
            │           ├── server.crt
            │           └── server.key
            └── users
                ├── Admin@org2.example.com
                │   ├── msp
                │   │   ├── admincerts
                │   │   │   └── ca.org2.example.com-cert.pem
                │   │   ├── cacerts
                │   │   │   └── ca.org2.example.com-cert.pem
                │   │   ├── keystore
                │   │   │   └── 20b446c7b6bf5006fccb1fc11168c56e48e937e2775bd46eec627fe7d37d5101_sk
                │   │   └── signcerts
                │   │       └── Admin@org2.example.com-cert.pem
                │   └── tls
                │       ├── ca.crt
                │       ├── server.crt
                │       └── server.key
                └── User1@org2.example.com
                    ├── msp
                    │   ├── admincerts
                    │   │   └── ca.org2.example.com-cert.pem
                    │   ├── cacerts
                    │   │   └── ca.org2.example.com-cert.pem
                    │   ├── keystore
                    │   │   └── b72634c677b36bb05718416db8dbdb5dc118ee54a3db8a2b7a6415df87c92e8b_sk
                    │   └── signcerts
                    │       └── User1@org2.example.com-cert.pem
                    └── tls
                        ├── ca.crt
                        ├── server.crt
                        └── server.key

         

           function replacePrivateKey ()

           复制一个docker-compose-e2e.yaml,然后将CA的密码替换进去

     cp docker-compose-e2e-template.yaml docker-compose-e2e.yaml

           generateChannelArtifacts()

          执行configtxgen生成创世块

    export FABRIC_CFG_PATH=$PWD
    ./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

         这里需要设置FABRIC_CFG_PATH,因为configtxgen是根据configtx.yaml这个文件取的内容,默认的名称是写在代码中,可以通过参数进行修改。

        会生成多个块,都放在channel-artifacts文件夹下面。默认的通道名是:CHANNEL_NAME:="mychannel"

        $CONFIGTXGEN -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
        $CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
        $CONFIGTXGEN -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

    generateArtifacts.sh文件执行完毕

    继续network_setup.sh的内容。

    需要选择是否使用COUCHDB,CouchDB 是一个开源的面向文档的数据库管理系统

    之后使用docker-compose -f   docker-compose-cli.yaml 开始启动容器了。这里很奇怪没有使用新生成的docker-compose-e2e.yaml。这个后续要研究一下。

    function networkUp () {
        #Generate all the artifacts that includes org certs, orderer genesis block,
        # channel configuration transaction
        source generateArtifacts.sh $CH_NAME
    
        if [ "${IF_COUCHDB}" == "couchdb" ]; then
          CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
        else
          CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
        fi
        if [ $? -ne 0 ]; then
        echo "ERROR !!!! Unable to pull the images "
        exit 1
        fi
        docker logs -f cli
    }

    至此启动过程结束。

  • 相关阅读:
    从索罗斯的“暴涨-暴跌”模型,看“房地产泡沫”
    在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏)
    深圳楼市2007vs2016
    细论庚金
    Win10无法安装提示磁盘布局不受UEFI固件支持怎样解决
    八字庚金特性
    广东省限价房转让需补70%的溢价
    DBUTIL 调用存储过程例子
    第二届八一杯网络大学生数学竞赛试题
    八一的专属上网导航服务
  • 原文地址:https://www.cnblogs.com/maobuji/p/7094440.html
Copyright © 2011-2022 走看看