1
0
mirror of https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git synced 2026-02-04 04:22:43 +03:00

Added support to Hetzner

This commit is contained in:
Hugo Rodrigues 2024-03-10 22:28:36 +00:00 committed by Jake Buchholz Göktürk
parent 119d7a686e
commit 2713aac43f
5 changed files with 47 additions and 3 deletions

View File

@ -0,0 +1,23 @@
# Hetzner Instance MetaData Service variables and functions
# vim:set filetype=sh:
# shellcheck shell=sh
IMDS_BASE_URI="hetzner/v1"
IMDS_URI="$IMDS_BASE_URI/metadata"
IMDS_HOSTNAME="hostname"
IMDS_LOCAL_HOSTNAME="$IMDS_HOSTNAME"
IMDS_SSH_KEYS="public-keys"
IMDS_USERDATA="userdata"
_imds_header() {
echo ""
}
_imds_ssh_keys() {
_imds "$IMDS_SSH_KEYS" | sed 's/"/\n/g' | egrep -v '(\[|\]|,)' | sort -u
}
_imds_userdata() {
wget --quiet --timeout 1 --output-document - --header "$(_imds_header)" "http://$IMDS_ENDPOINT/$IMDS_BASE_URI/$IMDS_USERDATA"
}

View File

@ -18,6 +18,7 @@ init_tests \
imds_hostname_nocloud \ imds_hostname_nocloud \
imds_hostname_oci \ imds_hostname_oci \
imds_hostname_scaleway \ imds_hostname_scaleway \
imds_hostname_hetzner \
\ \
imds_local_hostname_alpine \ imds_local_hostname_alpine \
imds_local_hostname_aws \ imds_local_hostname_aws \
@ -26,6 +27,7 @@ init_tests \
imds_local_hostname_nocloud \ imds_local_hostname_nocloud \
imds_local_hostname_oci \ imds_local_hostname_oci \
imds_local_hostname_scaleway \ imds_local_hostname_scaleway \
imds_local_hostname_hetzner \
\ \
imds_ssh_keys_alpine \ imds_ssh_keys_alpine \
imds_ssh_keys_aws \ imds_ssh_keys_aws \
@ -34,6 +36,7 @@ init_tests \
imds_ssh_keys_nocloud \ imds_ssh_keys_nocloud \
imds_ssh_keys_oci \ imds_ssh_keys_oci \
imds_ssh_keys_scaleway \ imds_ssh_keys_scaleway \
imds_ssh_keys_hetzner \
\ \
imds_nocloud_cmdline_local_hostname \ imds_nocloud_cmdline_local_hostname \
imds_nocloud_smbios_local_hostname \ imds_nocloud_smbios_local_hostname \
@ -54,7 +57,7 @@ imds_space_body() {
check_hostname() { check_hostname() {
fake_metadata "$1" <<-EOF fake_metadata "$1" <<-EOF
# nocloud, alpine, aws # nocloud, alpine, aws, hetzner
hostname: myhostname hostname: myhostname
# azure # azure
compute: compute:
@ -77,11 +80,14 @@ HOSTNAME=myhostname
EOF EOF
CLOUD="scaleway" atf_check -o match:"myhostname" imds @hostname CLOUD="scaleway" atf_check -o match:"myhostname" imds @hostname
} }
imds_hostname_hetzner_body() { check_hostname hetzner; }
check_local_hostname() { check_local_hostname() {
fake_metadata "$1" <<-EOF fake_metadata "$1" <<-EOF
# nocloud, alpine, aws # nocloud, alpine, aws
local-hostname: myhostname local-hostname: myhostname
# hetzner
hostname: myhostname
# azure # azure
compute: compute:
name: myhostname name: myhostname
@ -103,6 +109,7 @@ HOSTNAME=myhostname
EOF EOF
CLOUD="scaleway" atf_check -o match:"myhostname" imds @local-hostname CLOUD="scaleway" atf_check -o match:"myhostname" imds @local-hostname
} }
imds_local_hostname_hetzner_body() { check_local_hostname hetzner; }
check_ssh_keys() { check_ssh_keys() {
local key="ssh-ed25519 keydata" local key="ssh-ed25519 keydata"
@ -148,6 +155,14 @@ SSH_PUBLIC_KEYS_0_IP=
EOF EOF
CLOUD="scaleway" atf_check -o match:"$key" imds @ssh-keys CLOUD="scaleway" atf_check -o match:"$key" imds @ssh-keys
} }
imds_ssh_keys_hetzner_body() {
local key="ssh-ed25519 keydata"
fake_metadata "hetzner" <<-EOF
# hetzner
public-keys: '["$key"]'
EOF
CLOUD="hetzner" atf_check -o match:"$key" imds @ssh-keys
}
imds_nocloud_cmdline_local_hostname_body() { imds_nocloud_cmdline_local_hostname_body() {
atf_require_prog yx atf_require_prog yx

View File

@ -25,7 +25,7 @@ init_tests \
userdata_type \ userdata_type \
run_userdata run_userdata
PROVIDERS="alpine aws azure gcp nocloud oci scaleway" PROVIDERS="alpine aws azure gcp nocloud oci scaleway hetzner"
expand_root_body() { expand_root_body() {
mkdir proc mkdir proc

View File

@ -93,6 +93,11 @@ fake_userdata_scaleway() {
cat > "169.254.42.42.txt" cat > "169.254.42.42.txt"
} }
fake_metadata_hetzner() {
cat > "169.254.169.254.yaml"
export WGET_STRIP_PREFIX="/hetzner/v1/metadata"
}
fake_metadata() { fake_metadata() {
case "${1:-$CLOUD}" in case "${1:-$CLOUD}" in
alpine|nocloud) fake_metadata_nocloud;; alpine|nocloud) fake_metadata_nocloud;;
@ -101,6 +106,7 @@ fake_metadata() {
gcp) fake_metadata_gcp;; gcp) fake_metadata_gcp;;
oci) fake_metadata_oci;; oci) fake_metadata_oci;;
scaleway) fake_metadata_scaleway;; scaleway) fake_metadata_scaleway;;
hetzner) fake_metadata_hetzner;;
*) echo "TODO: fake_metadata_$CLOUD" >&2;; *) echo "TODO: fake_metadata_$CLOUD" >&2;;
esac esac
} }

View File

@ -6,7 +6,7 @@
export PREFIX="$srcdir" export PREFIX="$srcdir"
export MOCK=echo export MOCK=echo
PROVIDERS="alpine aws azure gcp nocloud oci scaleway" PROVIDERS="alpine aws azure gcp nocloud oci scaleway hetzner"
init_tests \ init_tests \
tiny_cloud_help \ tiny_cloud_help \