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"