Запустите docker exec с удаленного компьютера в Hyperledger Fabric + - PullRequest
0 голосов
/ 22 января 2019

Я использую матрицу Hyperledger с числом n пиров, каждый на своей виртуальной машине. У VM0 есть peer0, заказчик и CA. VM1 имеет peer1, VM2 имеет peer2 и так далее. После того, как все контейнеры Docker работают, канал создается, каждый узел присоединяется к каналу, цепной код устанавливается и создается через peer0, а затем устанавливается на всех других узлах.

# Stop existing containers and bring up the network
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up -d

# Create the channel
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
# Join peer0.org1.example.com to the channel.
docker exec -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel fetch config -o orderer.example.com:7050 -c mychannel

docker exec -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b mychannel_config.block

# Install and instantiate chaincode through CLI container
docker exec -e "CORE_PEER_ADDRESS=peer0.org1.example.com:7051" cli peer chaincode install -n exp2 -p github.com/exp2/go -v 1.0
docker exec -e "CORE_PEER_ADDRESS=peer0.org1.example.com:7051" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n exp2 -v 1.0 -c '{"Args":[""]}' -P "AND('Org1MSP.member')"
sleep 5
docker exec -e "CORE_PEER_ADDRESS=peer0.org1.example.com:7051" cli peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n exp2 -c '{"function":"initLedger","Args":[""]}'

При текущей настройке мне нужно запускать аналогичный сценарий отдельно на каждой виртуальной машине, чтобы партнер подключился к каналу и установил цепной код. Есть ли способ просто запустить один скрипт с VM0 и завершить настройку на других виртуальных машинах. Можем ли мы вызвать Docker-контейнер удаленно и выполнить команду docker exec удаленно на всех других виртуальных машинах?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы можете использовать эти Сценарии , чтобы присоединиться к сети из двух организаций. Однако вам может понадобиться K8S или док-станция Swarm или дополнительный хост для одноранговых узлов для соединения друг с другом

0 голосов
/ 22 января 2019

С ansible это довольно легко сделать: https://www.ansible.com/resources/get-started

Вы должны настроить файл инвентаризации с хостами для каждой организации.

hosts:
  org1:
    ansible_host: ip
  org2:
    ansible_host: ip

И запустить команду, используя ansible-playbook команда, передающая файл .yml с командами, которые должны выполняться на каждом хосте.

- hosts: org1
  tasks:
  - name: Create channel 1
    command: docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
...