Skip to content

Commit f889779

Browse files
wkdev-setup-cluster-administration-tools: Add.
Provide a new script that installs all tools needed to administrate the kubernetes cluster, described in webkit-container-infrastructure repo. OpenTofu / Helm / Packer / kubectl / hcloud-cli will be installed by this script.
1 parent fbf6f38 commit f889779

File tree

2 files changed

+204
-0
lines changed

2 files changed

+204
-0
lines changed

images/wkdev_sdk/required_system_packages/04-devtools.lst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ libappstream-dev
2626
# post-install for Epiphany
2727
desktop-file-utils
2828

29+
# JSON commandline processing
30+
jq
31+
2932
# For OpenXR tests
3033
libopenxr1-monado
3134
monado-service
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
#!/usr/bin/env bash
2+
# Copyright 2025 Igalia S.L.
3+
# SPDX-License: MIT
4+
5+
if [ -f "${WKDEV_SDK}/.wkdev-sdk-root" ]; then
6+
source "${WKDEV_SDK}/utilities/application.sh"
7+
else
8+
echo "Please set \${WKDEV_SDK} to point to the root of the wkdev-sdk checkout."
9+
exit 1
10+
fi
11+
source "${WKDEV_SDK}/utilities/prerequisites.sh"
12+
13+
init_application "${0}" "Install webkit-cluster-infrastructure related administration tools." container-only
14+
15+
verify_executables_exist curl
16+
17+
argsparse_allow_no_argument true
18+
argsparse_use_option "=yes" "Assume yes for all prompts."
19+
argsparse_use_option "no-extensions" "Don't install extensions."
20+
21+
install_opentofu() {
22+
23+
_log_ ""
24+
_log_ "Installing OpenTofu..."
25+
_log_ ""
26+
27+
if which tofu > /dev/null; then
28+
_log_ "OpenTofu already installed."
29+
return
30+
fi
31+
32+
local download_url='https://get.opentofu.org/install-opentofu.sh'
33+
34+
if ! curl --silent --fail --location "${download_url}" -o /tmp/install-opentofu.sh; then
35+
_log_ "Failed to download OpenTofu installation script."
36+
exit 1
37+
fi
38+
39+
if ! chmod +x /tmp/install-opentofu.sh; then
40+
_log_ "Failed to make OpenTofu installation script executable."
41+
rm /tmp/install-opentofu.sh
42+
exit 1
43+
fi
44+
45+
if ! /tmp/install-opentofu.sh --install-method deb; then
46+
_log_ "Failed to install OpenTofu."
47+
rm /tmp/install-opentofu.sh
48+
exit 1
49+
fi
50+
51+
rm /tmp/install-opentofu.sh
52+
_log_ ""
53+
_log_ "OpenTofu has been installed."
54+
}
55+
56+
install_helm() {
57+
58+
_log_ ""
59+
_log_ "Installing Helm..."
60+
_log_ ""
61+
62+
if which helm > /dev/null; then
63+
_log_ "Helm already installed."
64+
return
65+
fi
66+
67+
local download_url='https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3'
68+
69+
if ! curl --silent --fail --location "${download_url}" -o /tmp/install-helm.sh; then
70+
_log_ "Failed to download Helm installation script."
71+
exit 1
72+
fi
73+
74+
if ! chmod +x /tmp/install-helm.sh; then
75+
_log_ "Failed to make Helm installation script executable."
76+
rm /tmp/install-helm.sh
77+
exit 1
78+
fi
79+
80+
if ! /tmp/install-helm.sh; then
81+
_log_ "Failed to install Helm."
82+
rm /tmp/install-helm.sh
83+
exit 1
84+
fi
85+
86+
rm /tmp/install-helm.sh
87+
_log_ ""
88+
_log_ "Helm has been installed."
89+
}
90+
91+
install_packer() {
92+
93+
_log_ ""
94+
_log_ "Installing Packer..."
95+
_log_ ""
96+
97+
if which packer > /dev/null; then
98+
_log_ "Packer already installed."
99+
return
100+
fi
101+
102+
local base_url='https://apt.releases.hashicorp.com'
103+
104+
if ! curl --silent --fail --location "${base_url}"/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/hashicorp-archive-keyring.gpg > /dev/null; then
105+
_log_ "Failed to add gpg key for Packer."
106+
exit 1
107+
fi
108+
109+
if ! echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/hashicorp-archive-keyring.gpg] "${base_url}" $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list; then
110+
_log_ "Failed to add apt repository for Packer."
111+
exit 1
112+
fi
113+
114+
if ! sudo apt update; then
115+
_log_ "Failed to update package list using apt."
116+
exit 1
117+
fi
118+
119+
if ! sudo apt install packer; then
120+
_log_ "Failed to install Packer."
121+
exit 1
122+
fi
123+
124+
_log_ ""
125+
_log_ "Packer has been installed."
126+
}
127+
128+
install_kubectl() {
129+
130+
_log_ ""
131+
_log_ "Installing kubectl..."
132+
_log_ ""
133+
134+
if which kubectl > /dev/null; then
135+
_log_ "kubectl already installed."
136+
return
137+
fi
138+
139+
local base_url='https://pkgs.k8s.io/core:/stable:/v1.31/deb'
140+
141+
if ! curl --silent --fail --location "${base_url}"/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg > /dev/null; then
142+
_log_ "Failed to add gpg key for kubectl."
143+
exit 1
144+
fi
145+
146+
if ! echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] "${base_url}"/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list; then
147+
_log_ "Failed to add apt repository for kubectl."
148+
exit 1
149+
fi
150+
151+
if ! sudo apt update; then
152+
_log_ "Failed to update package list using apt."
153+
exit 1
154+
fi
155+
156+
if ! sudo apt install kubectl; then
157+
_log_ "Failed to install kubectl."
158+
exit 1
159+
fi
160+
161+
_log_ ""
162+
_log_ "kubectl has been installed."
163+
}
164+
165+
install_hcloud_cli() {
166+
167+
_log_ ""
168+
_log_ "Installing hcloud-cli..."
169+
_log_ ""
170+
171+
if which hcloud-cli > /dev/null; then
172+
_log_ "hcloud-cli already installed."
173+
return
174+
fi
175+
176+
if ! sudo apt update; then
177+
_log_ "Failed to update package list using apt."
178+
exit 1
179+
fi
180+
181+
if ! sudo apt install hcloud-cli; then
182+
_log_ "Failed to install hcloud-cli."
183+
exit 1
184+
fi
185+
186+
_log_ ""
187+
_log_ "hcloud-cli has been installed."
188+
}
189+
190+
run() {
191+
192+
argsparse_parse_options "${@}"
193+
194+
install_opentofu
195+
install_helm
196+
install_packer
197+
install_kubectl
198+
install_hcloud_cli
199+
}
200+
201+
run "${@}"

0 commit comments

Comments
 (0)