git: de0a279c8b69 - main - nuageinit: apply meta-data if user-data is a script
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 03 Oct 2026 22:46:01 UTC
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=de0a279c8b6967ffd1cb0c9f76d3cc4658a0f1aa
commit de0a279c8b6967ffd1cb0c9f76d3cc4658a0f1aa
Author: Adam Mizerski <adam.mizerski@ovhcloud.com>
AuthorDate: 2026-09-25 08:54:48 +0000
Commit: Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2026-10-03 22:45:22 +0000
nuageinit: apply meta-data if user-data is a script
Tested by: adam.mizerski@ovhcloud.com
Sponsored by: OVHcloud
Pull Request: https://github.com/freebsd/freebsd-src/pull/2446
---
libexec/nuageinit/nuageinit | 26 ++++++++++++++------------
libexec/nuageinit/tests/nuageinit.sh | 19 ++++++++++++++++---
2 files changed, 30 insertions(+), 15 deletions(-)
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()