1
0
mirror of https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git synced 2025-12-15 11:22:43 +03:00

More Cloud Autodetects

This commit is contained in:
Jake Buchholz Göktürk 2024-11-17 04:41:59 +00:00
parent 98928e89a2
commit 697957f8c0
9 changed files with 107 additions and 12 deletions

View File

@ -1,5 +1,18 @@
# CHANGELOG # CHANGELOG
## 2024-xx-xx - Tiny Cloud v3.1.0
* Default to "/usr merge" friendly installation locations
* Configure cloud provider via kernel cmdline or DMI system serial -- either
with `ds=<cloud>` or `tinycloud=cloud=<cloud>` (we may introduce additional
cmdline Tiny Cloud config settings in the future).
* Autodetection of `aws`, `azure`, `gcp`, and `oci` cloud providers via DMI
information.
* Make sure all user-data handlers get installed.
## 2024-11-04 - Tiny Cloud v3.0.8 ## 2024-11-04 - Tiny Cloud v3.0.8
* Officially add Makefile targets and flesh out tests for newer cloud modules: * Officially add Makefile targets and flesh out tests for newer cloud modules:

View File

@ -27,14 +27,17 @@ openrc:
aws: aws:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/aws \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/aws \
lib/tiny-cloud/cloud/aws/* lib/tiny-cloud/cloud/aws/*
chmod 0755 "$(PREFIX)"/usr/lib/tiny-cloud/cloud/aws/autodetect
azure: azure:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/azure \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/azure \
lib/tiny-cloud/cloud/azure/* lib/tiny-cloud/cloud/azure/*
chmod 0755 "$(PREFIX)"/usr/lib/tiny-cloud/cloud/azure/autodetect
gcp: gcp:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/gcp \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/gcp \
lib/tiny-cloud/cloud/gcp/* lib/tiny-cloud/cloud/gcp/*
chmod 0755 "$(PREFIX)"/usr/lib/tiny-cloud/cloud/gcp/autodetect
hetzner: hetzner:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/hetzner \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/hetzner \
@ -42,20 +45,18 @@ hetzner:
incus: incus:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/incus \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/incus \
lib/tiny-cloud/cloud/incus/imds lib/tiny-cloud/cloud/incus/*
install -Dm755 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/incus \ chmod 0755 "$(PREFIX)"/usr/lib/tiny-cloud/cloud/incus/autodetect
lib/tiny-cloud/cloud/incus/autodetect
nocloud: nocloud:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/nocloud \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/nocloud \
lib/tiny-cloud/cloud/nocloud/init \ lib/tiny-cloud/cloud/nocloud/*
lib/tiny-cloud/cloud/nocloud/imds chmod 0755 "$(PREFIX)"/usr/lib/tiny-cloud/cloud/nocloud/autodetect
install -Dm755 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/nocloud \
lib/tiny-cloud/cloud/nocloud/autodetect
oci: oci:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/oci \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/oci \
lib/tiny-cloud/cloud/oci/* lib/tiny-cloud/cloud/oci/*
chmod 0755 "$(PREFIX)"/usr/lib/tiny-cloud/cloud/oci/autodetect
scaleway: scaleway:
install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/scaleway \ install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/scaleway \

View File

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

View File

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

View File

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

View File

@ -1,3 +1,5 @@
#!/bin/sh #!/bin/sh
# vim:set filetype=sh:
# shellcheck shell=sh
test -e "$ROOT"/dev/incus/sock && echo "10 incus" test -e "$ROOT"/dev/incus/sock && echo "10 incus"

View File

@ -1,10 +1,7 @@
#!/bin/sh #!/bin/sh
# Tiny Cloud - Autodetect
# vim:set filetype=sh: # vim:set filetype=sh:
# shellcheck shell=sh # shellcheck shell=sh
# kernel cmdline & DMI product serial are checked in common
findfs LABEL=cidata >/dev/null 2>&1 \ findfs LABEL=cidata >/dev/null 2>&1 \
|| findfs LABEL=CIDATA >/dev/null 2>&1 \ || findfs LABEL=CIDATA >/dev/null 2>&1 \
&& echo "10 nocloud" && echo "10 nocloud"

View File

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

View File

@ -23,11 +23,17 @@ init_tests \
set_ssh_keys \ set_ssh_keys \
userdata_type \ userdata_type \
run_userdata \ run_userdata \
autodetect_unknown \ autodetect_aws_cmdline \
autodetect_aws_nitro \
autodetect_aws_xen \
autodetect_azure \
autodetect_gcp \
autodetect_incus \ autodetect_incus \
autodetect_nocloud_cmdline \ autodetect_nocloud_cmdline \
autodetect_nocloud_dmi \ autodetect_nocloud_dmi \
autodetect_nocloud_volume autodetect_nocloud_volume \
autodetect_oci \
autodetect_unknown
PROVIDERS="aws azure gcp nocloud oci scaleway hetzner" PROVIDERS="aws azure gcp nocloud oci scaleway hetzner"
@ -230,6 +236,54 @@ autodetect_unknown_body() {
sh -c ". \"$lib\"; echo \$CLOUD" sh -c ". \"$lib\"; echo \$CLOUD"
} }
autodetect_aws_cmdline_body() {
mkdir -p proc
echo "quiet tinycloud=cloud=aws console=ttyS0" > proc/cmdline
atf_check \
-o match:"aws" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_aws_nitro_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnAmazonEC2:bvr1.0:bd10/16/2017:br1.0:svnAmazonEC2:pnm6g.metal:pvr1.0:rvnAmazonEC2:rnNotSpecified:rvrNotSpecified:cvnAmazonEC2:ct1:cvrNotSpecified:skuNotSpecified:
EOT
atf_check \
-o match:"aws" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_aws_xen_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnXen:bvr4.11.amazon:bd08/24/2006:svnXen:pnHVMdomU:pvr4.11.amazon:cvnXen:ct1:cvr
EOT
atf_check \
-o match:"aws" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_azure_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnMicrosoftCorporation:bvrHyper-VUEFIReleasev4.1:bd03/08/2024:br4.1:svnMicrosoftCorporation:pnVirtualMachine:pvrHyper-VUEFIReleasev4.1:rvnMicrosoftCorporation:rnVirtualMachine:rvrHyper-VUEFIReleasev4.1:cvnMicrosoftCorporation:ct3:cvrHyper-VUEFIReleasev4.1:skuNone:
EOT
atf_check \
-o match:"azure" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_gcp_body() {
mkdir -p sys/class/dmi/id
cat > sys/class/dmi/id/modalias <<-EOT
dmi:bvnGoogle:bvrGoogle:bd10/22/2024:br1.0:svnGoogle:pnGoogleComputeEngine:pvr:rvnKVM:rnGoogleComputeEngine:rvr:cvnGoogle:ct1:cvr:sku:
EOT
atf_check \
-o match:"gcp" \
sh -c ". \"$lib\"; echo \$CLOUD"
}
autodetect_incus_body() { autodetect_incus_body() {
mkdir -p dev/incus mkdir -p dev/incus
touch dev/incus/sock touch dev/incus/sock
@ -268,3 +322,11 @@ autodetect_nocloud_volume_body() {
-o match:"nocloud" \ -o match:"nocloud" \
sh -c ". \"$lib\"; echo \$CLOUD" sh -c ". \"$lib\"; echo \$CLOUD"
} }
autodetect_oci_body() {
mkdir -p sys/class/dmi/id
echo OracleCloud.com > sys/class/dmi/id/chassis_asset_tag
atf_check \
-o match:"oci" \
sh -c ". \"$lib\"; echo \$CLOUD"
}