forked from thoughtbot/laptop
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsetup_sre_linux.sh
159 lines (141 loc) · 3.79 KB
/
setup_sre_linux.sh
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
#!/bin/bash
# Welcome to the linux laptop script! Be prepared to turn your laptop (or
# desktop, no haters here) into an awesome development machine.
is_installed(){
if command -v $1 &> /dev/null
then
true
else
false
fi
}
install_linux_required(){
# gcc
sudo apt update
sudo apt install -y gcc gnupg lsb-release libxslt1-dev libcurl4-openssl-dev libksba8 libksba-dev libreadline-dev build-essential apt-transport-https ca-certificates
}
install_tools_required(){
# install screen, tmux, dnsutils, telnet, nslookup
sudo apt install -y screen tmux telnet dnsutils curl wget make net-tools
if ! command -v arkade &> /dev/null
then
curl -sLS https://get.arkade.dev | sudo sh
echo 'export PATH=$PATH:$HOME/.arkade/bin/' >> ~/.bashrc
fi
}
install_golang(){
echo "install_golang"
if is_installed go
then
echo "Golang is already installed"
go version
else
echo "Install go"
sudo arkade system install go
fi
}
install_docker(){
if is_installed docker
then
echo "Docker already installed"
return
fi
echo "Installing Docker"
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo apt-get install docker-compose-plugin
# echo "Adding DNS Domain in docker daemon"
# DNS_DOMAIN=$(systemd-resolve --status | grep "DNS Servers" | cut -d ":" -f 2)
# bash -c "cat <<EOF >/etc/docker/daemon.json
##{
# \"dns\": [\"$DNS_DOMAIN\"]
#}
#EOF"
sudo systemctl enable docker --now
sudo systemctl enable containerd --now
sudo systemctl restart docker
echo "Adding user to docker"
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
}
install_k8s(){
echo "Install k8s"
if ! is_installed kind
then
arkade get kind
fi
if ! is_installed kubectl
then
arkade get kubectl
fi
if ! is_installed helm
then
arkade get helm
fi
}
install_aws_cli(){
if ! command -v aws &> /dev/null
then
echo "Installing AWS CLI"
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip"
unzip -q /tmp/awscliv2.zip -d /tmp/
/tmp/aws/install
aws --version
else
echo "aws cli already installed";
fi
}
install_starship_rs(){
# Install and configure the shell
echo "install starship_rs"
if ! is_installed starship
then
curl -sS https://starship.rs/install.sh | sh
echo 'eval "$(starship init bash)"' >> ~/.bashrc
fi
}
install_miscellaneous(){
echo "install miscellaneous"
#kompse, kubectl plugins, git plugins eg. lazygit, lazydocker, fzf
if ! is_installed fzf
then
arkade get fzf
fi
if ! is_installed kubectx
then
arkade get kubectx
fi
if ! is_installed kubens
then
arkade get kubens
fi
if ! is_installed lazydocker
then
wget -O /tmp/lazydocker.tar.gz https://github.com/jesseduffield/lazydocker/releases/download/v0.18.1/lazydocker_0.18.1_Linux_x86.tar.gz
mkdir /tmp/lazydocker
tar -xvzf /tmp/lazydocker.tar.gz -C /tmp/lazydocker
sudo mv /tmp/lazydocker/lazydocker /usr/bin/lazydocker
sudo chmod +x /usr/bin/lazydocker
sudo rm -rf /tmp/lazydocker*
fi
if ! is_installed hadolint
then
sudo wget -O /usr/bin/hadolint https://github.com/hadolint/hadolint/releases/download/v2.10.0/hadolint-Linux-x86_64
sudo chmod +x /usr/bin/hadolint
fi
}
main(){
install_linux_required
install_tools_required
install_golang
install_docker
install_k8s
install_starship_rs
install_miscellaneous
}
main