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:
parent
119d7a686e
commit
2713aac43f
23
lib/tiny-cloud/cloud/hetzner/imds
Normal file
23
lib/tiny-cloud/cloud/hetzner/imds
Normal 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"
|
||||||
|
}
|
||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 \
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user