This repository has been archived by the owner on Jan 31, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathprovision-root.sh
167 lines (140 loc) · 6.23 KB
/
provision-root.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
160
161
162
163
164
165
166
167
#!/usr/bin/env bash
set -o errexit
set -o pipefail
if [ -z $1 ]; then
HLF_VERSION=2.2.0
else
HLF_VERSION=$1
fi
if [ ${HLF_VERSION:0:4} = '2.4.' ]; then
export GO_VERSION=1.17.10
elif [ ${HLF_VERSION:0:4} = '2.2.' -o ${HLF_VERSION:0:4} = '2.3.' ]; then
export GO_VERSION=1.14.11
elif [ ${HLF_VERSION:0:4} = '2.0.' -o ${HLF_VERSION:0:4} = '2.1.' ]; then
export GO_VERSION=1.13.15
elif [ ${HLF_VERSION:0:4} = '1.2.' -o ${HLF_VERSION:0:4} = '1.3.' -o ${HLF_VERSION:0:4} = '1.4.' ]; then
export GO_VERSION=1.10.4
elif [ ${HLF_VERSION:0:4} = '1.1.' ]; then
export GO_VERSION=1.9.7
else
>&2 echo "Unexpected HLF_VERSION ${HLF_VERSION}"
>&2 echo "HLF_VERSION must be a 1.1.x, 1.2.x, 1.3.x, 1.4.x, 2.0.x, 2.1.x, 2.2.x, 2.3.x, or 2.4.x version"
exit 1
fi
# APT setup for docker packages
mkdir -p /etc/apt/keyrings
rm -f /etc/apt/keyrings/docker.gpg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --batch --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" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# APT setup for kubectl
curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo \
"deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ \
kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
# Update package lists
apt-get update
# Install jq
apt-get -y --no-upgrade install jq
# Install yq
YQ_VERSION=4.23.1
if [ ! -x "/usr/local/bin/yq" ]; then
curl --fail --silent --show-error -L "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_amd64" -o /usr/local/bin/yq
chmod 755 /usr/local/bin/yq
fi
# Install unzip
apt-get -y --no-upgrade install unzip
# Install java
apt-get -y --no-upgrade install default-jdk
# Install python 3.8
apt-get -y --no-upgrade install python3.8-minimal python3.8-venv python3.8-dev python3-pip
# Install sponge
apt-get -y --no-upgrade install moreutils
# Install Git
apt-get -y --no-upgrade install git
# Install nvm dependencies
apt-get -y --no-upgrade install build-essential libssl-dev
# Ensure that CA certificates are installed
apt-get -y --no-upgrade install apt-transport-https ca-certificates
# Install docker
apt-get -y --no-upgrade install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Add user to docker group
usermod -aG docker vagrant
# Install compose-switch
if [ ! -x "/usr/local/bin/compose-switch" ]; then
curl --fail --silent --show-error -L https://github.com/docker/compose-switch/releases/latest/download/docker-compose-linux-amd64 -o /usr/local/bin/compose-switch
chmod +x /usr/local/bin/compose-switch
update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99
fi
# Install kubectl
apt-get -y --no-upgrade install kubectl
# Install kind
KIND_VERSION=0.14.0
if [ ! -x "/usr/local/bin/kind" ]; then
curl --fail --silent --show-error -L "https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-amd64" -o /usr/local/bin/kind
chmod 755 /usr/local/bin/kind
fi
# Install k9s
K9S_VERSION=0.25.3
if [ ! -x "/usr/local/bin/k9s" ]; then
curl --fail --silent --show-error -L "https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_Linux_x86_64.tar.gz" -o "/tmp/k9s_Linux_x86_64.tar.gz"
tar -zxf "/tmp/k9s_Linux_x86_64.tar.gz" -C /usr/local/bin k9s
chown root:root /usr/local/bin/k9s
chmod 755 /usr/local/bin/k9s
fi
# Install go
if [ ! -d /usr/local/go ]; then
curl --fail --silent --show-error -L "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" -o "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"
tar -C /usr/local -xzf "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"
rm "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"
fi
# Install maven
MAVEN_VERSION=3.6.3
if [ ! -d /opt/apache-maven-${MAVEN_VERSION} ]; then
curl --fail --silent --show-error -L "https://www-eu.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -o "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
tar -C /opt -xzf "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
rm "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
cat \
<< END-MAVEN-SH > /etc/profile.d/maven.sh
export MAVEN_HOME=/opt/apache-maven-${MAVEN_VERSION}
export PATH=\$PATH:\$MAVEN_HOME/bin
END-MAVEN-SH
chmod +x /etc/profile.d/maven.sh
fi
# Install gradle
GRADLE_VERSION=5.4.1
if [ ! -d /opt/gradle-${GRADLE_VERSION} ]; then
curl --fail --silent --show-error -L "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -o "/tmp/gradle-${GRADLE_VERSION}-bin.zip"
unzip -d /opt /tmp/gradle-${GRADLE_VERSION}-bin.zip
rm "/tmp/gradle-${GRADLE_VERSION}-bin.zip"
cat \
<< END-GRADLE-SH > /etc/profile.d/gradle.sh
export GRADLE_HOME=/opt/gradle-${GRADLE_VERSION}
export PATH=\$PATH:\$GRADLE_HOME/bin
END-GRADLE-SH
chmod +x /etc/profile.d/gradle.sh
fi
# Install protoc
PROTOC_VERSION=3.9.1
if [ ! -x "/usr/local/bin/protoc" ]; then
curl --fail --silent --show-error -L "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip" -o "/tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip"
unzip "/tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip" -d "/tmp/protoc-${PROTOC_VERSION}-linux-x86_64"
rm "/tmp/protoc-${PROTOC_VERSION}-linux-x86_64.zip"
mv /tmp/protoc-${PROTOC_VERSION}-linux-x86_64/bin/* /usr/local/bin/
mv /tmp/protoc-${PROTOC_VERSION}-linux-x86_64/include/* /usr/local/include/
rm -Rf "/tmp/protoc-${PROTOC_VERSION}-linux-x86_64"
fi
# Install ccmetadata
CCMETADATA_VERSION=0.2.0
if [ ! -x "/usr/local/bin/ccmetadata" ]; then
curl --fail --silent --show-error -L "https://github.com/hyperledgendary/ccmetadata/releases/download/v${CCMETADATA_VERSION}/ccmetadata-Linux-X64.tgz" -o "/tmp/ccmetadata-Linux-X64.tgz"
tar -zxf "/tmp/ccmetadata-Linux-X64.tgz" -C /usr/local/bin ccmetadata
chown root:root /usr/local/bin/ccmetadata
chmod 755 /usr/local/bin/ccmetadata
fi
# Install just
JUST_VERSION=1.2.0
if [ ! -x "/usr/local/bin/just" ]; then
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --tag ${JUST_VERSION} --to /usr/local/bin
fi