-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathsetup-ws-instance-python.sh
More file actions
100 lines (83 loc) · 4.23 KB
/
setup-ws-instance-python.sh
File metadata and controls
100 lines (83 loc) · 4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#bin/sh
## Script to set up VScode terminal in Workshop Studio: install CLIs, clone fastapi, set env vars, etc
## Go to tmp directory
cd /tmp
## Update OS
sudo yum update
## Install additional dependencies
sudo yum install -y jq
wget https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_amd64.tar.gz -O - |\
tar xz && sudo mv yq_linux_amd64 /usr/bin/yq
yq --version
## Install docker buildx
export BUILDX_VERSION=$(curl --silent "https://api.github.com/repos/docker/buildx/releases/latest" |jq -r .tag_name)
curl -JLO "https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.linux-amd64"
mkdir -p ~/.docker/cli-plugins
mv "buildx-$BUILDX_VERSION.linux-amd64" ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --use --driver=docker-container
## Install docker compose
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
echo 'alias docker-compose="docker compose"' >> ~/.bashrc
docker compose version
## Install eksctl
# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"
# (Optional) Verify checksum
curl -sL "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check
tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
## Install kubectl
# https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.34.4/2026-02-27/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --client
## Install Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm version
## Install minikube
cd /home/ec2-user/
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube version
rm minikube-linux-amd64
## Install VSCode extensions
code-server --install-extension amazonwebservices.aws-toolkit-vscode --force
code-server --install-extension ms-azuretools.vscode-docker --force
code-server --install-extension ms-kubernetes-tools.vscode-kubernetes-tools --force
code-server --install-extension ms-python.python --force
## Setup environment
cd ~/environment
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
export AWS_REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
export PUBLIC_IP=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-ipv4)
echo "export AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID}" | tee -a ~/.bashrc
echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bashrc
echo "export PUBLIC_IP=${PUBLIC_IP}" | tee -a ~/.bashrc
echo "alias k=kubectl" | tee -a ~/.bashrc
aws configure set default.region ${AWS_REGION}
## Clone Git repository of Python Fastapi app
git clone https://github.com/aws-samples/python-fastapi-demo-docker.git /home/ec2-user/environment/python-fastapi-demo-docker/
## Config .env file
cd /home/ec2-user/environment/python-fastapi-demo-docker/
cp .env.example .env
sed -i "s/\(AWS_REGION=\).*\$/\1$AWS_REGION/" .env
sed -i "s/\(AWS_ACCOUNT_ID=\).*\$/\1$AWS_ACCOUNT_ID/" .env
echo "set -a; source /home/ec2-user/environment/python-fastapi-demo-docker/.env; set +a" | tee -a ~/.bashrc
## Update region in eksctl yaml files
sed -i "s/\(region: \).*\$/\1$AWS_REGION/" eks/create-fargate-python.yaml
sed -i "s/\(region: \).*\$/\1$AWS_REGION/" eks/create-mng-python.yaml
## Print AWS env vars
printenv | sort