diff --git a/lib/tiny-cloud/init b/lib/tiny-cloud/init index 91b0b7e..0489000 100644 --- a/lib/tiny-cloud/init +++ b/lib/tiny-cloud/init @@ -201,6 +201,10 @@ init__set_default_interfaces() { init__create_default_user() { local user="$CLOUD_USER" + if [ "$user" = "none" ] || [ -z "$user" ]; then + log -i -t "$phase" info "$ACTION: skip" + return + fi # don't do anything if it already exists if getent passwd "$user" >/dev/null; then log -i -t "$phase" info "$ACTION: already exists" diff --git a/lib/tiny-cloud/user-data/alpine-config b/lib/tiny-cloud/user-data/alpine-config index 8a4e8de..5a868e3 100644 --- a/lib/tiny-cloud/user-data/alpine-config +++ b/lib/tiny-cloud/user-data/alpine-config @@ -24,6 +24,13 @@ init__userdata_user() { return fi fi + if get_userdata | grep -q -x users; then + local default_user="$(get_userdata users/1)" + if [ "$default_user" != "default" ]; then + CLOUD_USER="$(get_userdata users/1/name)" + return 0 + fi + fi CLOUD_USER="${name:-$CLOUD_USER}" } diff --git a/tests/tiny-cloud-alpine.test b/tests/tiny-cloud-alpine.test index a26d839..6169f80 100755 --- a/tests/tiny-cloud-alpine.test +++ b/tests/tiny-cloud-alpine.test @@ -15,6 +15,7 @@ init_tests \ userdata_user_name \ userdata_user_missing_name \ userdata_create_default_user \ + userdata_no_default_user \ userdata_ssh_authorized_keys \ userdata_groups \ userdata_bootcmd \ @@ -136,6 +137,18 @@ userdata_create_default_user_body() { tiny-cloud main } +userdata_no_default_user_body() { + fake_userdata_nocloud <<-EOF + #alpine-config + users: [] + EOF + atf_check -e ignore -o ignore tiny-cloud early + atf_check \ + -e match:"create_default_user: done" \ + -o not-match:"adduser" \ + tiny-cloud main +} + userdata_ssh_authorized_keys_body() { fake_bin getent <<-EOF #!/bin/sh