diff --git a/libexec/nuageinit/nuageinit b/libexec/nuageinit/nuageinit index 712a516c5195..758a7f20b305 100755 --- a/libexec/nuageinit/nuageinit +++ b/libexec/nuageinit/nuageinit @@ -1173,18 +1173,8 @@ end local metadata = load_metadata(citype) local line, obj = load_userdata() --- No user-data -if line == nil then - local calls_table = { - sethostname, - create_default_user, - } - - for i = 1, #calls_table do - calls_table[i](obj, metadata) - end -- YAML user-data -elseif line == "#cloud-config" then +if line == "#cloud-config" then local pre_network_calls = { ca_certs, mounts, @@ -1231,7 +1221,19 @@ elseif line == "#cloud-config" then calls_table[i](obj, metadata) end end -elseif line:sub(1, 2) == "#!" then +-- No YAML user-data +else + local calls_table = { + sethostname, + create_default_user, + } + + for i = 1, #calls_table do + calls_table[i](obj, metadata) + end +end + +if line ~= nil and line:sub(1, 2) == "#!" then -- delay for execution at rc.local time -- nuage.chmod(root .. "/var/cache/nuageinit/user_data", "0755") end diff --git a/libexec/nuageinit/tests/nuageinit.sh b/libexec/nuageinit/tests/nuageinit.sh index bfc7e9f13c88..9d443940e92b 100644 --- a/libexec/nuageinit/tests/nuageinit.sh +++ b/libexec/nuageinit/tests/nuageinit.sh @@ -92,23 +92,36 @@ EOF nocloud_userdata_script_body() { mkdir -p media/nuageinit - printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data + setup_test_adduser + cat > media/nuageinit/meta-data << EOF +instance-id: iid-local01 +hostname: myhost +EOF # ensure this is an invalid when parsed with the yaml parser printf "#!/bin/sh\n: ${test:-yes}\necho $test\n" > "${PWD}"/media/nuageinit/user-data chmod 644 "${PWD}"/media/nuageinit/user-data atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud atf_check test -x var/cache/nuageinit/user_data atf_check -o inline:"#!/bin/sh\n: ${test:-yes}\necho $test\n" cat var/cache/nuageinit/user_data + # ensure meta-data is applied, regardless of what is in user-data + atf_check -o inline:"hostname='myhost'\n" cat etc/rc.conf.d/hostname } nocloud_user_data_script_body() { mkdir -p media/nuageinit - printf "instance-id: iid-local01\n" > "${PWD}"/media/nuageinit/meta-data + setup_test_adduser + cat > media/nuageinit/meta-data << EOF +instance-id: iid-local01 +hostname: myhost +EOF printf "#!/bin/sh\necho yeah\n" > "${PWD}"/media/nuageinit/user_data - chmod 755 "${PWD}"/media/nuageinit/user_data + chmod 644 "${PWD}"/media/nuageinit/user_data atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit nocloud + atf_check test -x var/cache/nuageinit/user_data atf_check -o inline:"#!/bin/sh\necho yeah\n" cat var/cache/nuageinit/user_data + # ensure meta-data is applied, regardless of what is in user-data + atf_check -o inline:"hostname='myhost'\n" cat etc/rc.conf.d/hostname } nocloud_userdata_cloudconfig_users_head()