-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall-eksctl.sh
executable file
·64 lines (51 loc) · 1.76 KB
/
install-eksctl.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
#!/bin/bash
set -euo pipefail
readonly EKSCTL_PATH="/usr/local/bin/eksctl"
function is_installed() {
local tool_path="$1"
local tool_name="$2"
if [[ -f "$tool_path" ]]; then
echo "======================================="
echo "$tool_name is already installed at $(command -v "$tool_name")"
echo "Version: $($tool_name version)"
return 0
else
return 1
fi
}
function install_eksctl() {
local tool_name="$1"
local latest_version_url="$2"
if is_installed "${EKSCTL_PATH}" "eksctl"; then
local current_version
current_version=$(eksctl version)
local latest_version
latest_version=$(curl -sL "${latest_version_url}" | jq -r '.tag_name' | sed 's/v//')
if [[ "${current_version}" < "${latest_version}" ]]; then
echo "Current version ${current_version} is lower than the latest version ${latest_version}"
echo "Updating..."
sudo rm -f "${EKSCTL_PATH}"
download_and_install "${tool_name}" "${latest_version_url}"
else
echo "${tool_name} is up to date."
return 0
fi
else
echo "eksctl is not installed. Installing..."
download_and_install "${tool_name}" "${latest_version_url}"
fi
}
function download_and_install() {
local tool_name="$1"
local latest_version_url="$2"
local latest_version
latest_version=$(curl -sL "${latest_version_url}" | jq -r '.tag_name' | sed 's/v//')
local url="https://github.com/weaveworks/eksctl/releases/download/v${latest_version}/eksctl_Linux_amd64.tar.gz"
wget "${url}"
tar -xzf eksctl_Linux_amd64.tar.gz
chmod +x "${tool_name}"
sudo mv "${tool_name}" "${EKSCTL_PATH}"
rm eksctl_Linux_amd64.tar.gz
echo "Installed: $(${tool_name} version)"
}
install_eksctl "eksctl" "https://api.github.com/repos/weaveworks/eksctl/releases/latest"