mirror of
https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud.git
synced 2025-12-16 11:52:43 +03:00
Enable sshd & Source UserData Handler
This commit is contained in:
parent
4f9386bb94
commit
4ccc16f18f
@ -15,21 +15,21 @@ INIT_ACTIONS_EARLY="
|
|||||||
install_hotplugs
|
install_hotplugs
|
||||||
set_default_interfaces
|
set_default_interfaces
|
||||||
create_default_user
|
create_default_user
|
||||||
|
enable_sshd
|
||||||
"
|
"
|
||||||
INIT_ACTIONS_MAIN="
|
INIT_ACTIONS_MAIN="
|
||||||
save_userdata
|
save_userdata
|
||||||
set_hostname
|
set_hostname
|
||||||
set_ssh_keys
|
set_ssh_keys
|
||||||
"
|
"
|
||||||
INIT_ACTIONS_FINAL="
|
INIT_ACTIONS_FINAL=""
|
||||||
run_userdata
|
|
||||||
"
|
|
||||||
|
|
||||||
# try to ensure existence of output directories, but otherwise don't panic
|
# try to ensure existence of output directories, but otherwise don't panic
|
||||||
[ ! -d "$TINY_CLOUD_LOGS" ] && mkdir -p "$TINY_CLOUD_LOGS" || true
|
[ ! -d "$TINY_CLOUD_LOGS" ] && mkdir -p "$TINY_CLOUD_LOGS" || true
|
||||||
[ ! -d "$TINY_CLOUD_VAR" ] && mkdir -p "$TINY_CLOUD_VAR" || true
|
[ ! -d "$TINY_CLOUD_VAR" ] && mkdir -p "$TINY_CLOUD_VAR" || true
|
||||||
|
|
||||||
### init-early functions...
|
|
||||||
|
### standard init-early functions...
|
||||||
|
|
||||||
init__expand_root() {
|
init__expand_root() {
|
||||||
local dev=$(awk '$2 == "/" {print $1}' "$ROOT"/proc/mounts)
|
local dev=$(awk '$2 == "/" {print $1}' "$ROOT"/proc/mounts)
|
||||||
@ -181,8 +181,14 @@ init__create_default_user() {
|
|||||||
echo 'permit nopass :wheel' > "$TARGET/etc/doas.d/wheel.conf"
|
echo 'permit nopass :wheel' > "$TARGET/etc/doas.d/wheel.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init__enable_sshd() {
|
||||||
|
$MOCK rc-update add sshd default
|
||||||
|
# in case something else has enabled/disabled dservices
|
||||||
|
$MOCK rc-update --update
|
||||||
|
}
|
||||||
|
|
||||||
### init-main functions
|
|
||||||
|
### standard init-main functions
|
||||||
|
|
||||||
init__set_hostname() {
|
init__set_hostname() {
|
||||||
local fqdn=$(imds @hostname)
|
local fqdn=$(imds @hostname)
|
||||||
@ -237,46 +243,35 @@ init__save_userdata() {
|
|||||||
rm "$tmpfile"
|
rm "$tmpfile"
|
||||||
}
|
}
|
||||||
|
|
||||||
### init-final functions
|
|
||||||
|
|
||||||
init__run_userdata() {
|
### standard init-final functions would be here, if there were any
|
||||||
local log="$TINY_CLOUD_LOGS/user-data.log"
|
|
||||||
local exit="$TINY_CLOUD_LOGS/user-data.exit"
|
|
||||||
local userdata="$TINY_CLOUD_VAR/user-data"
|
|
||||||
|
|
||||||
if [ $(userdata_type) != "script" ]; then
|
|
||||||
printf '(Not Executable) ' >&2
|
|
||||||
log info "$phase $ACTION - not exectutable"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
chmod +x "$userdata"
|
### load cloud-specific init functions / vars (potentially overriding)
|
||||||
{ "$userdata" 2>& 1; echo $? > "$exit"; } | tee "$log"
|
|
||||||
|
|
||||||
return $(cat "$exit")
|
|
||||||
}
|
|
||||||
|
|
||||||
### potentially override the above, per cloud
|
|
||||||
|
|
||||||
# load cloud-specific init functions / vars
|
|
||||||
if [ -f "$LIBDIR/tiny-cloud/cloud/$CLOUD/init" ]; then
|
if [ -f "$LIBDIR/tiny-cloud/cloud/$CLOUD/init" ]; then
|
||||||
. "$LIBDIR/tiny-cloud/cloud/$CLOUD/init"
|
. "$LIBDIR/tiny-cloud/cloud/$CLOUD/init"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
### load user-data type-specific init functions / vars (potentially overriding)
|
||||||
|
|
||||||
# this should be non-overrideable, but need this before we...
|
# this should be non-overrideable, but need this before we...
|
||||||
userdata_type() {
|
userdata_type() {
|
||||||
if [ -f "$TINY_CLOUD_VAR/user-data" ]; then
|
if [ ! -f "$TINY_CLOUD_VAR/user-data" ]; then
|
||||||
|
echo missing
|
||||||
|
return
|
||||||
|
fi
|
||||||
header=$(head -n1 "$TINY_CLOUD_VAR/user-data" | sed -e 's/[[:space:]].*//g')
|
header=$(head -n1 "$TINY_CLOUD_VAR/user-data" | sed -e 's/[[:space:]].*//g')
|
||||||
case "$header" in
|
case "$header" in
|
||||||
'#cloud-config') echo cloud-config;;
|
|
||||||
'#!'*) echo script;;
|
'#!'*) echo script;;
|
||||||
|
'#'*) echo ${header#\#};;
|
||||||
*) echo unknown;;
|
*) echo unknown;;
|
||||||
esac
|
esac
|
||||||
else
|
|
||||||
echo missing
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ...load user-data type-specific init functions / vars
|
USERDATA_TYPE="$(userdata_type)"
|
||||||
# TODO
|
if [ -f "$LIBDIR/tiny-cloud/user-data/$USERDATA_TYPE" ]; then
|
||||||
|
. "$LIBDIR/tiny-cloud/user-data/$USERDATA_TYPE"
|
||||||
|
fi
|
||||||
|
# TODO: some indication that the user-data type is unsupported?
|
||||||
|
|||||||
@ -1,4 +1,16 @@
|
|||||||
# Script UserData Functions
|
# Script UserData Functions
|
||||||
# vim:set ts=4 et ft=sh:
|
# vim:set ts=4 et ft=sh:
|
||||||
|
|
||||||
# TODO
|
init__run_userdata() {
|
||||||
|
local log="$TINY_CLOUD_LOGS/user-data.log"
|
||||||
|
local exit="$TINY_CLOUD_LOGS/user-data.exit"
|
||||||
|
local userdata="$TINY_CLOUD_VAR/user-data"
|
||||||
|
|
||||||
|
chmod +x "$userdata"
|
||||||
|
{ "$userdata" 2>& 1; echo $? > "$exit"; } | tee "$log"
|
||||||
|
|
||||||
|
return $(cat "$exit")
|
||||||
|
}
|
||||||
|
|
||||||
|
# add init actions
|
||||||
|
INIT_ACTIONS_FINAL="${INIT_ACTIONS_FINAL} run_userdata"
|
||||||
|
|||||||
@ -13,7 +13,8 @@ init_tests \
|
|||||||
ethernets \
|
ethernets \
|
||||||
find_first_interface_up \
|
find_first_interface_up \
|
||||||
auto_detect_ethernet_interface \
|
auto_detect_ethernet_interface \
|
||||||
set_default_interfaces
|
set_default_interfaces \
|
||||||
|
enable_sshd
|
||||||
|
|
||||||
PROVIDERS="aws azure gcp nocloud oci"
|
PROVIDERS="aws azure gcp nocloud oci"
|
||||||
|
|
||||||
@ -99,3 +100,12 @@ set_default_interfaces_body() {
|
|||||||
-o match:"use dhcp" \
|
-o match:"use dhcp" \
|
||||||
cat etc/network/interfaces
|
cat etc/network/interfaces
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enable_sshd_body() {
|
||||||
|
for provider in $PROVIDERS; do
|
||||||
|
CLOUD="$provider" atf_check \
|
||||||
|
-o match:"rc-update.* add sshd default" \
|
||||||
|
-o match:"rc-update.* --update" \
|
||||||
|
sh -c ". $lib; init__enable_sshd"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|||||||
@ -21,6 +21,11 @@ userdata_type_body() {
|
|||||||
sh -c ". \"$lib\"; userdata_type"
|
sh -c ". \"$lib\"; userdata_type"
|
||||||
|
|
||||||
echo "#tiny-cloud-config" > var/lib/cloud/user-data
|
echo "#tiny-cloud-config" > var/lib/cloud/user-data
|
||||||
|
CLOUD="$c" atf_check \
|
||||||
|
-o match:"tiny-cloud-config" \
|
||||||
|
sh -c ". \"$lib\"; userdata_type"
|
||||||
|
|
||||||
|
echo "no-content-type" > var/lib/cloud/user-data
|
||||||
CLOUD="$c" atf_check \
|
CLOUD="$c" atf_check \
|
||||||
-o match:"unknown" \
|
-o match:"unknown" \
|
||||||
sh -c ". \"$lib\"; userdata_type"
|
sh -c ". \"$lib\"; userdata_type"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user