-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathdevops_stack.sh
More file actions
169 lines (129 loc) Β· 4.34 KB
/
Copy pathdevops_stack.sh
File metadata and controls
169 lines (129 loc) Β· 4.34 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#!/bin/bash
set -e
# ===============================
# π¨ Colors & UI
# ===============================
GREEN="\033[1;32m"
BLUE="\033[1;34m"
YELLOW="\033[1;33m"
RED="\033[1;31m"
CYAN="\033[1;36m"
RESET="\033[0m"
print_header() {
echo -e "\n${CYAN}=============================================${RESET}"
echo -e "${BLUE}π $1${RESET}"
echo -e "${CYAN}=============================================${RESET}\n"
}
print_step() {
echo -e "${YELLOW}π $1...${RESET}"
}
print_success() {
echo -e "${GREEN}β
$1 completed successfully${RESET}\n"
}
print_error() {
echo -e "${RED}β $1 failed${RESET}"
exit 1
}
# ===============================
# π Check root
# ===============================
if [[ $EUID -ne 0 ]]; then
echo -e "${RED}Please run as root (sudo)${RESET}"
exit 1
fi
# ===============================
# π Update system
# ===============================
print_header "Updating System Packages"
apt update -y && apt upgrade -y || print_error "System update"
print_success "System updated"
# ===============================
# π³ Install Docker
# ===============================
print_header "Installing Docker"
apt remove -y docker docker-engine docker.io containerd runc || true
apt install -y ca-certificates curl gnupg lsb-release unzip git
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" \
> /etc/apt/sources.list.d/docker.list
apt update -y
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker
systemctl start docker
print_success "Docker installed"
# ===============================
# βΈοΈ Install kubectl
# ===============================
print_header "Installing kubectl"
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
rm kubectl
print_success "kubectl installed"
# ===============================
# π Install kubectx + kubens
# ===============================
print_header "Installing kubectx & kubens"
git clone https://github.com/ahmetb/kubectx /opt/kubectx || true
ln -sf /opt/kubectx/kubectx /usr/local/bin/kubectx
ln -sf /opt/kubectx/kubens /usr/local/bin/kubens
print_success "kubectx & kubens installed"
# ===============================
# π Install eksctl
# ===============================
print_header "Installing eksctl"
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_${PLATFORM}.tar.gz"
tar -xzf eksctl_${PLATFORM}.tar.gz -C /tmp
mv /tmp/eksctl /usr/local/bin
rm eksctl_${PLATFORM}.tar.gz
print_success "eksctl installed"
# ===============================
# βοΈ Install AWS CLI v2 (Latest)
# ===============================
print_header "Installing AWS CLI v2"
print_step "Downloading AWS CLI"
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
print_step "Unzipping package"
unzip -q awscliv2.zip
print_step "Installing AWS CLI"
./aws/install --update
print_step "Cleaning up"
rm -rf aws awscliv2.zip
print_success "AWS CLI installed"
# ===============================
# π Docker Post Setup
# ===============================
print_header "Docker Post Setup"
usermod -aG docker $SUDO_USER || true
print_success "User added to docker group (logout/login required)"
# ===============================
# π Validation
# ===============================
print_header "Validating Installations"
docker --version || print_error "Docker"
kubectl version --client || print_error "kubectl"
kubectx -h >/dev/null || print_error "kubectx"
kubens -h >/dev/null || print_error "kubens"
eksctl version || print_error "eksctl"
aws --version || print_error "AWS CLI"
print_success "All tools validated"
# ===============================
# π Done
# ===============================
echo -e "${GREEN}"
echo "π DevOps Stack Installation Complete!"
echo "-------------------------------------"
echo "β Docker"
echo "β kubectl"
echo "β kubectx / kubens"
echo "β eksctl"
echo "β AWS CLI"
echo "-------------------------------------"
echo -e "${RESET}"