1
1
#! /bin/bash
2
2
set +e
3
3
4
- # Set by generic single-node and ha-node CDK components
5
- LIFECYCLE_HOOK_NAME=${_LIFECYCLE_HOOK_NAME_}
6
- AUTOSCALING_GROUP_NAME=${_AUTOSCALING_GROUP_NAME_}
7
4
RESOURCE_ID=${_NODE_CF_LOGICAL_ID_}
8
- ASSETS_S3_PATH=${_ASSETS_S3_PATH_}
9
- DATA_VOLUME_TYPE=${_DATA_VOLUME_TYPE_}
10
- DATA_VOLUME_SIZE=${_DATA_VOLUME_SIZE_}
11
-
12
- # Set by Base-specic CDK components and stacks
13
- AWS_REGION=${_AWS_REGION_}
14
5
STACK_NAME=${_STACK_NAME_}
15
6
RESTORE_FROM_SNAPSHOT=${_RESTORE_FROM_SNAPSHOT_}
16
- NETWORK_ID=${_NETWORK_ID_}
17
- NODE_CONFIG=${_NODE_CONFIG_}
18
- L1_EXECUTION_ENDPOINT=${_L1_EXECUTION_ENDPOINT_}
19
- L1_CONSENSUS_ENDPOINT=${_L1_CONSENSUS_ENDPOINT_}
20
- SNAPSHOT_URL=${_SNAPSHOT_URL_}
21
7
22
8
{
23
- echo " LIFECYCLE_HOOK_NAME=$LIFECYCLE_HOOK_NAME "
24
- echo " AUTOSCALING_GROUP_NAME=$AUTOSCALING_GROUP_NAME "
25
- echo " ASSETS_S3_PATH=$ASSETS_S3_PATH "
26
- echo " DATA_VOLUME_TYPE=$DATA_VOLUME_TYPE "
27
- echo " DATA_VOLUME_SIZE=$DATA_VOLUME_SIZE "
28
-
29
- echo " AWS_REGION=$AWS_REGION "
30
- echo " NETWORK_ID=$NETWORK_ID "
31
- echo " NODE_CONFIG=$NODE_CONFIG "
32
- echo " L1_EXECUTION_ENDPOINT=$L1_EXECUTION_ENDPOINT "
33
- echo " L1_CONSENSUS_ENDPOINT=$L1_CONSENSUS_ENDPOINT "
34
- echo " SNAPSHOT_URL=$SNAPSHOT_URL "
9
+ echo " LIFECYCLE_HOOK_NAME=${_LIFECYCLE_HOOK_NAME_} "
10
+ echo " AUTOSCALING_GROUP_NAME=${_AUTOSCALING_GROUP_NAME_} "
11
+ echo " ASSETS_S3_PATH=${_ASSETS_S3_PATH_} "
12
+ echo " DATA_VOLUME_TYPE=${_DATA_VOLUME_TYPE_} "
13
+ echo " DATA_VOLUME_SIZE=${_DATA_VOLUME_SIZE_} "
14
+
15
+ echo " AWS_REGION=${_AWS_REGION_} "
16
+ echo " NETWORK_ID=${_NETWORK_ID_} "
17
+ echo " BASE_CLIENT=${_BASE_CLIENT_} "
18
+ echo " NODE_CONFIG=${_NODE_CONFIG_} "
19
+ echo " L1_EXECUTION_ENDPOINT=${_L1_EXECUTION_ENDPOINT_} "
20
+ echo " L1_CONSENSUS_ENDPOINT=${_L1_CONSENSUS_ENDPOINT_} "
21
+ echo " SNAPSHOT_URL=${_SNAPSHOT_URL_} "
35
22
} >> /etc/cdk_environment
36
23
37
24
source /etc/cdk_environment
@@ -45,11 +32,9 @@ echo "Architecture detected: $arch"
45
32
46
33
if [ " $arch " == " x86_64" ]; then
47
34
SSM_AGENT_BINARY_URI=https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
48
- S5CMD_URI=https://github.com/peak/s5cmd/releases/download/v2.1.0/s5cmd_2.1.0_Linux-64bit.tar.gz
49
35
YQ_URI=https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
50
36
else
51
37
SSM_AGENT_BINARY_URI=https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_arm64/amazon-ssm-agent.rpm
52
- S5CMD_URI=https://github.com/peak/s5cmd/releases/download/v2.1.0/s5cmd_2.1.0_Linux-arm64.tar.gz
53
38
YQ_URI=https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64
54
39
fi
55
40
@@ -61,29 +46,6 @@ wget $YQ_URI -O /usr/bin/yq && chmod +x /usr/bin/yq
61
46
sudo systemctl enable crond.service
62
47
sudo systemctl start crond.service
63
48
64
- echo " Installing aria2 a p2p downloader"
65
- cd /tmp
66
-
67
- if [ " $arch " == " x86_64" ]; then
68
- wget https://github.com/q3aql/aria2-static-builds/releases/download/v1.36.0/aria2-1.36.0-linux-gnu-64bit-build1.tar.bz2
69
- tar jxvf aria2-1.36.0-linux-gnu-64bit-build1.tar.bz2
70
- cd aria2-1.36.0-linux-gnu-64bit-build1/
71
- make install
72
- else
73
- wget https://github.com/q3aql/aria2-static-builds/releases/download/v1.36.0/aria2-1.36.0-linux-gnu-arm-rbpi-build1.tar.bz2
74
- tar jxvf aria2-1.36.0-linux-gnu-arm-rbpi-build1.tar.bz2
75
- cd aria2-1.36.0-linux-gnu-arm-rbpi-build1/
76
- make install
77
- fi
78
-
79
- echo " Installing s5cmd"
80
- cd /opt
81
- wget -q $S5CMD_URI -O s5cmd.tar.gz
82
- tar -xf s5cmd.tar.gz
83
- chmod +x s5cmd
84
- mv s5cmd /usr/bin
85
- s5cmd version
86
-
87
49
cd /opt
88
50
89
51
echo " Downloading assets zip file"
@@ -116,7 +78,7 @@ echo "Starting docker"
116
78
service docker start
117
79
systemctl enable docker
118
80
119
- echo " Clonning node repo"
81
+ echo " Cloning node repo"
120
82
cd /home/bcuser
121
83
GIT_URL=https://github.com/base-org/node.git
122
84
git clone $GIT_URL
@@ -150,28 +112,12 @@ case $NODE_CONFIG in
150
112
;;
151
113
esac
152
114
153
- case $NETWORK_ID in
154
- " mainnet" )
155
- sed -i " s#OP_NODE_L1_ETH_RPC=https://1rpc.io/eth#OP_NODE_L1_ETH_RPC=$L1_EXECUTION_ENDPOINT #g" $OP_CONFIG_FILE_PATH
156
- sed -i ' /.env.mainnet/s/^#//g' /home/bcuser/node/docker-compose.yml
157
- sed -i ' /OP_NODE_L1_BEACON/s/^#//g' $OP_CONFIG_FILE_PATH
158
- sed -i " s#OP_NODE_L1_BEACON=https://your.mainnet.beacon.node/endpoint-here#OP_NODE_L1_BEACON=$L1_CONSENSUS_ENDPOINT #g" $OP_CONFIG_FILE_PATH
159
- ;;
160
- " sepolia" )
161
- sed -i " s#OP_NODE_L1_ETH_RPC=https://rpc.sepolia.org#OP_NODE_L1_ETH_RPC=$L1_EXECUTION_ENDPOINT #g" $OP_CONFIG_FILE_PATH
162
- sed -i " /.env.sepolia/s/^#//g" /home/bcuser/node/docker-compose.yml
163
- sed -i ' /OP_NODE_L1_BEACON/s/^#//g' $OP_CONFIG_FILE_PATH
164
- sed -i " s#OP_NODE_L1_BEACON=https://your.sepolia.beacon.node/endpoint-here#OP_NODE_L1_BEACON=$L1_CONSENSUS_ENDPOINT #g" $OP_CONFIG_FILE_PATH
165
- ;;
166
- * )
167
- echo " Network id is not valid."
168
- exit 1
169
- ;;
170
- esac
171
-
172
- echo " OP_NODE_L1_TRUST_RPC=true" >> $OP_CONFIG_FILE_PATH
115
+ sed -i " s#<your-preferred-l1-rpc>#$L1_EXECUTION_ENDPOINT #g" $OP_CONFIG_FILE_PATH
116
+ sed -i " s#<your-preferred-l1-beacon>#$L1_CONSENSUS_ENDPOINT #g" $OP_CONFIG_FILE_PATH
117
+ sed -i " s#<your-preferred-l1-beacon-archiver>#$L1_CONSENSUS_ENDPOINT #g" $OP_CONFIG_FILE_PATH
118
+ sed -i " s#OP_NODE_L1_TRUST_RPC=\" false\" #OP_NODE_L1_TRUST_RPC=\" true\" #g" $OP_CONFIG_FILE_PATH
173
119
174
- sed -i " s#GETH_HOST_DATA_DIR =./geth -data#GETH_HOST_DATA_DIR =/data/geth #g" /home/bcuser/node/.env
120
+ sed -i " s#HOST_DATA_DIR =./$BASE_CLIENT -data#HOST_DATA_DIR =/data#g" /home/bcuser/node/.env
175
121
176
122
chown -R bcuser:bcuser /home/bcuser/node
177
123
@@ -242,22 +188,22 @@ echo "Starting CloudWatch Agent"
242
188
-a fetch-config -c file:/opt/aws/amazon-cloudwatch-agent/etc/custom-amazon-cloudwatch-agent.json -m ec2 -s
243
189
systemctl restart amazon-cloudwatch-agent
244
190
245
- if [ " $RESTORE_FROM_SNAPSHOT " == " false" ]; then
246
- echo " Skipping restoration from snapshot. Starting node"
247
- systemctl daemon-reload
248
- systemctl enable --now node
249
- else
250
- echo " Restoring full node from snapshot over http"
251
- chmod +x /opt/instance/storage/restore-from-snapshot-http.sh
252
- echo " /opt/instance/storage/restore-from-snapshot-http.sh" | at now + 1 min
253
- fi
254
-
255
191
if [[ " $LIFECYCLE_HOOK_NAME " != " none" ]]; then
256
192
echo " Signaling ASG lifecycle hook to complete"
257
193
TOKEN=$( curl -s -X PUT " http://169.254.169.254/latest/api/token" -H " X-aws-ec2-metadata-token-ttl-seconds: 21600" )
258
194
INSTANCE_ID=$( curl -H " X-aws-ec2-metadata-token: $TOKEN " -s http://169.254.169.254/latest/meta-data/instance-id)
259
195
aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE --instance-id $INSTANCE_ID --lifecycle-hook-name " $LIFECYCLE_HOOK_NAME " --auto-scaling-group-name " $AUTOSCALING_GROUP_NAME " --region $AWS_REGION
260
196
fi
261
197
198
+ if [ " $RESTORE_FROM_SNAPSHOT " == " false" ]; then
199
+ echo " Skipping restoration from snapshot. Starting node"
200
+ systemctl daemon-reload
201
+ systemctl enable --now node
202
+ else
203
+ echo " Restoring full node from snapshot"
204
+ chmod +x /opt/instance/storage/restore-from-snapshot.sh
205
+ /opt/instance/storage/restore-from-snapshot.sh
206
+ fi
207
+
262
208
echo " All Done!!"
263
209
set -e
0 commit comments