Skip to content

Commit 2b8e5c9

Browse files
author
Julien CAFFET
committed
Update devnet deployment script
1 parent 0984ffa commit 2b8e5c9

File tree

2 files changed

+40
-37
lines changed

2 files changed

+40
-37
lines changed

scripts/aws/deploy.devnet.sh

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,11 @@ if [[ $(basename "$PWD") != "nuklaivm" ]]; then
99
exit 1
1010
fi
1111

12-
KEY_FILE="./scripts/aws/nuklaivm-nodes-devnet.pem"
13-
KEY_NAME="nuklaivm-nodes-devnet"
14-
INSTANCE_NAME="nuklaivm-nodes-devnet"
12+
KEY_NAME="../ssh-keys/nuklaivm-nodes-devnet.pem"
1513
REGION="eu-west-1"
16-
INSTANCE_TYPE="t3a.medium"
17-
SECURITY_GROUP="sg-0c06bc676cb309bbc"
18-
SUBNET_ID="subnet-08322a251c30c1367"
19-
USER_DATA_FILE="./scripts/aws/install_docker.sh"
14+
INSTANCE_NAME="nuklaivm-nodes-devnet"
15+
INSTANCE_PROFILE_NAME="nuklaivm-nodes-devnet"
2016
TARBALL="nuklaivm.tar.gz"
21-
#AMI_ID="ami-008d05461f83df5b1"
22-
AMI_ID="ami-0a094c309b87cc107"
2317
EIP_FILE="./scripts/aws/elastic_ip_allocation.txt"
2418

2519
# Default values for addresses
@@ -51,6 +45,9 @@ for ((i=1; i<=RETRIES; i++)); do
5145
aws ec2 wait instance-terminated --instance-ids $INSTANCE_ID --region $REGION
5246
echo "Instance terminated."
5347
break
48+
elif [[ "$INSTANCE_ID" = "None" ]]; then
49+
echo "No instance running"
50+
break
5451
elif [[ $i -eq $RETRIES ]]; then
5552
echo "Failed to describe instances after $RETRIES attempts."
5653
exit 1
@@ -83,14 +80,9 @@ fi
8380

8481
# Launch a new EC2 instance
8582
echo "Launching a new EC2 instance..."
86-
INSTANCE_ID=$(aws ec2 run-instances --region $REGION \
87-
--image-id $AMI_ID --count 1 --instance-type $INSTANCE_TYPE \
88-
--key-name $KEY_NAME --security-group-ids $SECURITY_GROUP \
89-
--subnet-id $SUBNET_ID \
90-
--associate-public-ip-address \
91-
--block-device-mappings 'DeviceName=/dev/xvda,Ebs={VolumeSize=100,VolumeType=gp3,DeleteOnTermination=true}' \
92-
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$INSTANCE_NAME}]" \
93-
--user-data file://$USER_DATA_FILE \
83+
INSTANCE_ID=$(aws ec2 run-instances \
84+
--region $REGION \
85+
--launch-template "LaunchTemplateName=$INSTANCE_PROFILE_NAME,Version=$Latest" \
9486
--query "Instances[0].InstanceId" --output text)
9587

9688

@@ -113,10 +105,10 @@ if [ -f "$HOME/.ssh/known_hosts" ]; then
113105
fi
114106

115107
echo "Transferring tarball and private key to the EC2 instance..."
116-
scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_FILE $TARBALL ec2-user@$ELASTIC_IP:/home/ec2-user/
108+
scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_NAME $TARBALL ec2-user@$ELASTIC_IP:/home/ec2-user/
117109

118110
echo "Connecting to the EC2 instance and deploying devnet..."
119-
ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_FILE ec2-user@$ELASTIC_IP << EOF
111+
ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_NAME ec2-user@$ELASTIC_IP << EOF
120112
echo "Waiting for Docker installation to complete..."
121113
TIMEOUT=180 # Set a timeout in seconds to wait for Docker installation completion
122114
SECONDS=0
@@ -150,7 +142,7 @@ ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_FILE
150142
nuklai-devnet
151143
152144
echo "Checking if the blockchain is fully started..."
153-
TIMEOUT=180 # Timeout for blockchain readiness check
145+
TIMEOUT=300 # Timeout for blockchain readiness check
154146
SECONDS=0
155147
SUCCESS=false
156148
until [[ "\$SUCCESS" == true || SECONDS -ge TIMEOUT ]]; do

scripts/aws/deploy.devnet_new.sh renamed to scripts/aws/deploy.devnet.sh.old

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ if [[ $(basename "$PWD") != "nuklaivm" ]]; then
99
exit 1
1010
fi
1111

12-
KEY_NAME="../ssh-keys/nuklaivm-nodes-devnet.pem"
12+
KEY_FILE="./scripts/aws/nuklaivm-nodes-devnet.pem"
13+
KEY_NAME="nuklaivm-nodes-devnet"
1314
INSTANCE_NAME="nuklaivm-nodes-devnet"
1415
REGION="eu-west-1"
15-
INSTANCE_PROFILE_NAME=""
1616
INSTANCE_TYPE="t3a.medium"
1717
SECURITY_GROUP="sg-0c06bc676cb309bbc"
1818
SUBNET_ID="subnet-08322a251c30c1367"
@@ -40,16 +40,23 @@ done
4040
echo "Using AMI ID: $AMI_ID"
4141

4242
# Check if an instance is already running
43-
INSTANCE_ID=$(aws ec2 describe-instances --region $REGION \
44-
--filters "Name=tag:Name,Values=$INSTANCE_NAME" "Name=instance-state-name,Values=running" \
45-
--query "Reservations[0].Instances[0].InstanceId" --output text)
46-
47-
if [ "$INSTANCE_ID" != "None" ]; then
48-
echo "Existing instance found. Terminating it..."
49-
aws ec2 terminate-instances --instance-ids $INSTANCE_ID --region $REGION
50-
aws ec2 wait instance-terminated --instance-ids $INSTANCE_ID --region $REGION
51-
echo "Instance terminated."
52-
fi
43+
RETRIES=3
44+
for ((i=1; i<=RETRIES; i++)); do
45+
INSTANCE_ID=$(aws ec2 describe-instances --region $REGION \
46+
--filters "Name=tag:Name,Values=$INSTANCE_NAME" "Name=instance-state-name,Values=running" \
47+
--query "Reservations[0].Instances[0].InstanceId" --output text)
48+
if [[ "$INSTANCE_ID" != "None" ]]; then
49+
echo "Existing instance found. Terminating it..."
50+
aws ec2 terminate-instances --instance-ids $INSTANCE_ID --region $REGION
51+
aws ec2 wait instance-terminated --instance-ids $INSTANCE_ID --region $REGION
52+
echo "Instance terminated."
53+
break
54+
elif [[ $i -eq $RETRIES ]]; then
55+
echo "Failed to describe instances after $RETRIES attempts."
56+
exit 1
57+
fi
58+
sleep $((2**i))
59+
done
5360

5461
# Check if an Elastic IP has already been allocated
5562
if [ -f "$EIP_FILE" ]; then
@@ -76,10 +83,14 @@ fi
7683

7784
# Launch a new EC2 instance
7885
echo "Launching a new EC2 instance..."
79-
INSTANCE_ID=$(aws ec2 run-instances \
80-
--region $REGION \
86+
INSTANCE_ID=$(aws ec2 run-instances --region $REGION \
87+
--image-id $AMI_ID --count 1 --instance-type $INSTANCE_TYPE \
88+
--key-name $KEY_NAME --security-group-ids $SECURITY_GROUP \
8189
--subnet-id $SUBNET_ID \
82-
--launch-template 'LaunchTemplateName=nuklaivm-nodes-devnet,Version=$Latest' \
90+
--associate-public-ip-address \
91+
--block-device-mappings 'DeviceName=/dev/xvda,Ebs={VolumeSize=100,VolumeType=gp3,DeleteOnTermination=true}' \
92+
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$INSTANCE_NAME}]" \
93+
--user-data file://$USER_DATA_FILE \
8394
--query "Instances[0].InstanceId" --output text)
8495

8596

@@ -102,10 +113,10 @@ if [ -f "$HOME/.ssh/known_hosts" ]; then
102113
fi
103114

104115
echo "Transferring tarball and private key to the EC2 instance..."
105-
scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_NAME $TARBALL ec2-user@$ELASTIC_IP:/home/ec2-user/
116+
scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_FILE $TARBALL ec2-user@$ELASTIC_IP:/home/ec2-user/
106117

107118
echo "Connecting to the EC2 instance and deploying devnet..."
108-
ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_NAME ec2-user@$ELASTIC_IP << EOF
119+
ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -i $KEY_FILE ec2-user@$ELASTIC_IP << EOF
109120
echo "Waiting for Docker installation to complete..."
110121
TIMEOUT=180 # Set a timeout in seconds to wait for Docker installation completion
111122
SECONDS=0

0 commit comments

Comments
 (0)