diff --git a/scripts/deploy_garage.sh b/scripts/deploy_garage.sh new file mode 100755 index 0000000..ee9ce92 --- /dev/null +++ b/scripts/deploy_garage.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +set -ex + +if [ -z ${MNEMONIC+x} ] +then + echo 'Error! $MNEMONIC is required.' + exit 64 +fi + +if [ -z ${NETWORK+x} ] +then + echo 'Error! $NETWORK is required.' + exit 64 +fi + +if [ -z ${DOMAIN+x} ] +then + echo 'Error! $DOMAIN is required.' + exit 64 +fi + +echo MNEMONIC=$MNEMONIC +echo NETWORK=$NETWORK + +# Install tfcmd to deploy vms + +wget https://github.com/threefoldtech/tfgrid-sdk-go/releases/download/v0.15.5/tfgrid-sdk-go_Linux_x86_64.tar.gz +mkdir tfgrid-sdk-go +tar -xzf tfgrid-sdk-go_Linux_x86_64.tar.gz -C tfgrid-sdk-go +mv tfgrid-sdk-go/tfcmd /usr/bin/ +rm -rf tfgrid-sdk-go_Linux_x86_64.tar.gz tfgrid-sdk-go +printf "$MNEMONIC\n$NETWORK\n" | tfcmd login + +# Deploy a vm with mycelium and public IP (mycelium not suppoerted yet) for s3 server TODO: mycelium and remove public IP + +tfcmd deploy vm --name s3_server --ssh ~/.ssh/id_rsa.pub --cpu 8 --memory 16 --disk 50 --ipv4 +sleep 6 # wait deployment +OUTPUT=$(tfcmd get vm s3_server 2>&1 | tail -n +3 | tr { '\n' | tr , '\n' | tr } '\n') +MYCELIUM_IP=$(echo "$OUTPUT" | grep -Eo '"mycelium_ip"[^,]*' | awk -F'"' '{print $4}') +PUBLIC_IP=$(echo "$OUTPUT" | grep -Eo '"computedip"[^,]*' | awk -F'"' '{print $4}' | cut -d/ -f1-1) + +# Deploy a name gateway to expose a domain for garage web + +tfcmd deploy gateway name -n $DOMAIN --backends http://$PUBLIC_IP:3902 +sleep 6 # wait deployment +OUTPUT=$(tfcmd get gateway name $DOMAIN 2>&1 | tail -n +3 | tr { '\n' | tr , '\n' | tr } '\n') +FQDN=$(echo "$OUTPUT" | grep -Eo '"FQDN"[^,]*' | awk -F'"' '{print $4}') + +# Expose S3 server over public IP (mycelium not suppoerted yet) (garage is used) TODO: mycelium and remove public IP + +ssh root@$PUBLIC_IP " +wget https://garagehq.deuxfleurs.fr/_releases/v1.0.0/x86_64-unknown-linux-musl/garage +chmod +x garage +mv garage /usr/local/bin + +cat > /etc/garage.toml < output.log 2>&1 & +" diff --git a/scripts/manage_buckets.sh b/scripts/manage_buckets.sh new file mode 100755 index 0000000..b9dda3c --- /dev/null +++ b/scripts/manage_buckets.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +set -ex + +if [ -z ${PUBLIC_IP+x} ] +then + echo 'Error! $PUBLIC_IP is required.' + exit 64 +fi + +# Create flist bucket and blobs bucket for rfs store + +NODE_ID=$(ssh root@$PUBLIC_IP "garage status | awk 'NR==3{print \$1}'") + +ssh root@$PUBLIC_IP " +garage layout assign -z dc1 -c 1G $NODE_ID +garage layout apply --version 1 +garage bucket create blobs +garage bucket create flist +garage bucket list +" + +# NOTE: SAVE THE KEYS + +WRITE_KEY_INFO=$(ssh root@$PUBLIC_IP "garage key create write-rfs-key | awk 'NR==2{print \$3}NR==3{print \$3}'") +WRITE_KEY_ID=$(echo $KEY_INFO | awk '{print $1}') +WRITE_KEY_SECRET=$(echo $KEY_INFO | awk '{print $2}') + + +READ_KEY_INFO=$(ssh root@$PUBLIC_IP "garage key create read-rfs-key | awk 'NR==2{print \$3}NR==3{print \$3}'") +READ_KEY_ID=$(echo $KEY_INFO | awk '{print $1}') +READ_KEY_SECRET=$(echo $KEY_INFO | awk '{print $2}') + +ssh root@$PUBLIC_IP " +garage bucket allow \ + --read \ + --write \ + --owner \ + flist \ + --key write-rfs-key +garage bucket allow \ + --read \ + --write \ + --owner \ + blobs \ + --key write-rfs-key + +garage bucket allow \ + --read \ + flist \ + --key read-rfs-key +garage bucket allow \ + --read \ + blobs \ + --key read-rfs-key +# "