2018-06-26 22:56:29 -07:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
nodes_file=$1
|
|
|
|
remote_user=$2
|
|
|
|
ssh_keys=$3
|
|
|
|
|
2018-06-27 07:07:08 -07:00
|
|
|
oldIFS="$IFS"
|
|
|
|
IFS=$'\n' ip_addr_array=($(<$nodes_file))
|
|
|
|
IFS="$oldIFS"
|
|
|
|
|
|
|
|
ssh_command_prefix='export PATH="$HOME/.cargo/bin:$PATH"; cd solana; USE_INSTALL=1 ./multinode-demo/'
|
2018-06-26 22:56:29 -07:00
|
|
|
|
|
|
|
count=0
|
|
|
|
leader=
|
2018-06-27 07:07:08 -07:00
|
|
|
for ip_addr in "${ip_addr_array[@]}"; do
|
|
|
|
echo "$ip_addr"
|
|
|
|
|
|
|
|
rsync -r -av ~/.cargo/bin "$remote_user"@"$ip_addr":~/.cargo
|
|
|
|
rsync -r -av ./multinode-demo "$remote_user"@"$ip_addr":~/solana/
|
2018-06-26 22:56:29 -07:00
|
|
|
|
2018-06-27 07:07:08 -07:00
|
|
|
if [[ -z $ssh_keys ]]; then
|
|
|
|
echo "skip copying the ssh keys"
|
2018-06-26 22:56:29 -07:00
|
|
|
else
|
2018-06-27 07:07:08 -07:00
|
|
|
echo "rsync -r -av $ssh_keys/* $remote_user@$ip_addr:~/.ssh/"
|
2018-06-26 22:56:29 -07:00
|
|
|
fi
|
|
|
|
|
2018-06-27 07:07:08 -07:00
|
|
|
ssh "$remote_user"@"$ip_addr" $ssh_command_prefix'setup.sh'
|
2018-06-26 22:56:29 -07:00
|
|
|
|
2018-06-27 07:07:08 -07:00
|
|
|
if [[ "$count" -eq 0 ]]; then
|
2018-06-26 22:56:29 -07:00
|
|
|
# Start the leader on the first node
|
2018-06-27 07:07:08 -07:00
|
|
|
echo "Starting leader node $ip_addr"
|
|
|
|
ssh -n -f "$remote_user"@"$ip_addr" $ssh_command_prefix'leader.sh > leader.log 2>&1'
|
|
|
|
leader=${ip_addr_array[0]}
|
2018-06-26 22:56:29 -07:00
|
|
|
else
|
|
|
|
# Start validator on all other nodes
|
2018-06-27 07:07:08 -07:00
|
|
|
echo "Starting validator node $ip_addr"
|
|
|
|
ssh -n -f "$remote_user"@"$ip_addr" $ssh_command_prefix"validator.sh $remote_user@$leader:~/solana $leader > validator.log 2>&1"
|
2018-06-26 22:56:29 -07:00
|
|
|
fi
|
|
|
|
|
|
|
|
(( count++ ))
|
|
|
|
|
2018-06-27 07:07:08 -07:00
|
|
|
if [[ "$count" -eq ${#ip_addr_array[@]} ]]; then
|
2018-06-26 22:56:29 -07:00
|
|
|
# Launch client demo on the last node
|
2018-06-27 07:07:08 -07:00
|
|
|
echo "Starting client demo on $ip_addr"
|
|
|
|
ssh -n -f "$remote_user"@"$ip_addr" $ssh_command_prefix"client.sh $remote_user@$leader:~/solana $count > client.log 2>&1"
|
2018-06-26 22:56:29 -07:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|