1
0
mirror of https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git synced 2025-12-14 19:02:45 +03:00

Autodetect for Hetzner and Scaleway

This commit is contained in:
Jake Buchholz Göktürk 2024-11-24 10:53:50 -08:00
parent 697957f8c0
commit 158230f7a6
5 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,5 @@
#!/bin/sh
# vim:set filetype=sh:
# shellcheck shell=sh
grep -qi hetzner "$ROOT"/sys/class/dmi/id/modalias 2>/dev/null && echo "10 hetzner"

View File

@ -0,0 +1,18 @@
# AWS Instance MetaData Service variables and functions
# vim:set filetype=sh:
# shellcheck shell=sh
IMDS_HEADER="X-aws-ec2-metadata-token"
IMDS_TOKEN_TTL_HEADER="X-aws-ec2-metadata-token-ttl-seconds"
: "${IMDS_TOKEN_TTL:=5}"
IMDS_URI="latest"
_imds_token() {
printf "PUT /latest/api/token HTTP/1.0\r\n%s: %s\r\n\r\n" \
"$IMDS_TOKEN_TTL_HEADER" "$IMDS_TOKEN_TTL" \
| nc -w 1 "$IMDS_ENDPOINT" 80 | tail -n 1
}
_imds_header() {
echo "$IMDS_HEADER: $(_imds_token)"
}

View File

@ -0,0 +1,6 @@
#!/bin/sh
# vim:set filetype=sh:
# shellcheck shell=sh
# TODO: verify that this works
grep -qi scaleway "$ROOT"/sys/class/dmi/id/modalias 2>/dev/null && echo "10 scaleway"

View File

@ -0,0 +1,18 @@
# AWS Instance MetaData Service variables and functions
# vim:set filetype=sh:
# shellcheck shell=sh
IMDS_HEADER="X-aws-ec2-metadata-token"
IMDS_TOKEN_TTL_HEADER="X-aws-ec2-metadata-token-ttl-seconds"
: "${IMDS_TOKEN_TTL:=5}"
IMDS_URI="latest"
_imds_token() {
printf "PUT /latest/api/token HTTP/1.0\r\n%s: %s\r\n\r\n" \
"$IMDS_TOKEN_TTL_HEADER" "$IMDS_TOKEN_TTL" \
| nc -w 1 "$IMDS_ENDPOINT" 80 | tail -n 1
}
_imds_header() {
echo "$IMDS_HEADER: $(_imds_token)"
}

View File

@ -28,11 +28,13 @@ init_tests \
autodetect_aws_xen \
autodetect_azure \
autodetect_gcp \
autodetect_hetzner \
autodetect_incus \
autodetect_nocloud_cmdline \
autodetect_nocloud_dmi \
autodetect_nocloud_volume \
autodetect_oci \
autodetect_scaleway \
autodetect_unknown
PROVIDERS="aws azure gcp nocloud oci scaleway hetzner"
@ -284,6 +286,16 @@ autodetect_gcp_body() {
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_hetzner_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnHetzner:bvrHetzner:bd10/22/2024:br1.0:svnHetzner:pnHetzner:pvr:rvnKVM:rnHetzner:rvr:cvnHetzner:ct1:cvr:sku:
EOT
atf_check \
-o match:"hetzner" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_incus_body() {
mkdir -p dev/incus
touch dev/incus/sock
@ -330,3 +342,13 @@ autodetect_oci_body() {
-o match:"oci" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_scaleway_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnScaleway:bvrScaleway:bd10/22/2024:br1.0:svnScaleway:pnScaleway:pvr:rvnKVM:rnScaleway:rvr:cvnScaleway:ct1:cvr:sku:
EOT
atf_check \
-o match:"scaleway" \
sh -c ". \"$lib\"; echo \$CLOUD"
}