github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/helm/burrow/initialize.sh (about) 1 #!/usr/bin/env bash 2 3 # Preflight checks 4 if [[ "$(which mktemp)" == "" ]] 5 then 6 echo "Please install mktemp and then rerun me. Exiting." 7 exit 1 8 fi 9 if [[ "$(which burrow)" == "" ]] 10 then 11 echo "Please install Hyperledger Burrow and then rerun me. Exiting." 12 exit 1 13 fi 14 15 export CHAIN_NODES=${CHAIN_NODES:-4} 16 export CHAIN_NAME=${CHAIN_NAME:-"my-release-burrow"} 17 if [ -z $CHAIN_OUTPUT_DIRECTORY ]; then 18 export CHAIN_OUTPUT_DIRECTORY=`pwd` 19 fi 20 21 set -e 22 23 title="Initializing $((CHAIN_NODES)) Validator Nodes" 24 echo -e "\n${title}\n${title//?/-}\n" 25 26 echo "Writing kubernetes template files for validators secrets, and configmaps." 27 keysTemplate=$(mktemp) 28 valsTemplate=$(mktemp) 29 genSpec=$(mktemp) 30 genesis=$(mktemp) 31 keys=$(mktemp -d) 32 33 function finish { 34 rm $keysTemplate 35 rm $valsTemplate 36 rm $genSpec 37 rm $genesis 38 rm -r $keys 39 } 40 trap finish EXIT 41 42 setup="setup.yaml" 43 values="addresses.yaml" 44 45 cat >$keysTemplate <<EOF 46 {{- range \$index, \$val := .Validators -}} 47 apiVersion: v1 48 kind: Secret 49 type: Opaque 50 metadata: 51 name: {{ $.ChainName }}-keys-{{ printf "%03d" \$index }} 52 data: 53 {{- \$keys := $.Keys -}} 54 55 {{- if index \$keys $val.Address }} 56 {{ \$val.Address }}.json: {{ base64 (index \$keys \$val.Address).KeyJSON }} 57 {{- end -}} 58 59 {{- if index \$keys $val.NodeAddress }} 60 node_key.json: {{ base64 (index \$keys \$val.NodeAddress).KeyJSON }} 61 {{- end }} 62 63 --- 64 {{ end -}} 65 EOF 66 67 cat >$valsTemplate <<EOF 68 validators: 69 {{- range .Validators }} 70 - name: {{ .Name }} 71 address: {{ .Address -}} 72 {{ if .NodeAddress }} 73 nodeAddress: {{ .NodeAddress }} 74 {{- end -}} 75 {{- end }} 76 EOF 77 78 echo "Building the genesis spec with burrow ($(burrow --version))." 79 burrow spec \ 80 --toml \ 81 --validator-accounts=$CHAIN_NODES \ 82 $CHAIN_SPEC_FILES > $genSpec 83 84 echo "Creating keys and necessary deploy files..." 85 burrow configure \ 86 --chain-name=$CHAIN_NAME \ 87 --keys-dir=$keys \ 88 --genesis-spec=$genSpec \ 89 --config-template-in=$keysTemplate \ 90 --config-out=$CHAIN_OUTPUT_DIRECTORY/$setup \ 91 --config-template-in=$valsTemplate \ 92 --config-out=$CHAIN_OUTPUT_DIRECTORY/$values \ 93 --separate-genesis-doc=$genesis >/dev/null 94 95 echo "Saved keys and genesis as $CHAIN_OUTPUT_DIRECTORY/$setup" 96 echo "Saved example 'values.yaml' as $CHAIN_OUTPUT_DIRECTORY/$values" 97 98 cat >>$CHAIN_OUTPUT_DIRECTORY/$setup <<EOF 99 apiVersion: v1 100 kind: ConfigMap 101 metadata: 102 name: $CHAIN_NAME-genesis 103 data: 104 genesis.json: | 105 `cat $genesis | jq -rc .` 106 EOF 107 108 echo -e "Done\n"