From nobody Mon Jun 23 07:44:14 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bQg7y4LZKz5ywk5; Mon, 23 Jun 2025 07:44:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bQg7y3d37z4CMq; Mon, 23 Jun 2025 07:44:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750664654; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k7Q9+3Uzhd+WensnP3TBGd5wYEXYsN3Krl/1Uo4Jjq0=; b=iBTqoSfuw1ZJIqd3cU42Fdk3M/BBk7Vh4pgiSd/5N/NUUFvhmuomkv0Z1z7cyDok7RHcvO aBEDF39kCE5XeqtKNN02VfVK9mv+fNfbem4pbbAyrUX+F/8OA/MPYxUd/ZAHOo5jJL4Vzb sId569Kale2G5JofVv88ykn47nv2FdkxT6vEcpEgBPRq39UkMaDO+eHrRyhlD1OgulCVTc BWB4kHFPAC8Fgt7/x3pqkWLqdirXP88HhWYVj8ztUJofGMJTE+get2WxKHNxtFgwBUJ4e4 AkbFTOjFfnzO+EEA5t56slc+I2yaFszuCxRI9jxOzw+DTV6ughmLVWsuY9m6xA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750664654; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k7Q9+3Uzhd+WensnP3TBGd5wYEXYsN3Krl/1Uo4Jjq0=; b=t/5/diIO+/+xysF9td7IEj5rgf8fD6z0NoQjnkaAdpoyMaEvzRKv/slJp+S339KurUNg3n bcTaHUPHa5+5b/qj7uRXl+kJ5RsIyGZxVX6TyhbW8cdXCDkNQxx5wT9zyAlRvD3T4/CfFa JfnMAzKp+FqMKmAXavzDsXkUtRd1KayNtbU/M9NJgLsfrRuZIv0UO2gNlXF56Tq+6ETbDa FUeBhBj7176NmiZW5FDGtJwuyq41qIdK06bKJwREcX88fZEWokg/iJ+mhh8viV5TcFsmQF LNibft95X4Bcns8aR4oWViW1efFf/8crTxX65gUyS+MnA0dnWX2Z7FDyp4loOw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1750664654; a=rsa-sha256; cv=none; b=MuFY9BusKAI/2gHYIE26EllTdxh3LqIyUVxQse+Y4xXrcNX5843PWdgo/TRnJNl1W8yES6 +3KIPx3Mg8OK4EgONIIlManzgaSWhGIz3Hr4gotCOoqXLNPvbiVDf3AI2CU04gnsXXFvUf c9Xnm4fdFJgIVMX0OvcDdK+kGTeijxN4Dx0X/sVEpO+EXwuHHPBbxKoLpBPqIlA0goUUwF +QT3w3MYX93Q7krzvlpZBO48ZCl23QXT42O7E310fcFusNjhYtUlUbbwSVqUo8xoMg3+kQ 0jvaNylAY0GAUH3AGjF5RW/DPqXD/Qs7vHNSPR4QO150J3C/pwUXsj33pSHFfQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bQg7y2yvmzt38; Mon, 23 Jun 2025 07:44:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 55N7iEBU067318; Mon, 23 Jun 2025 07:44:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55N7iE58067315; Mon, 23 Jun 2025 07:44:14 GMT (envelope-from git) Date: Mon, 23 Jun 2025 07:44:14 GMT Message-Id: <202506230744.55N7iE58067315@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Baptiste Daroussin Subject: git: f27b5d04f4df - stable/14 - nuageinit: runcmd should also be executed late List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f27b5d04f4df8556908e9af8db28460ac4536a9f Auto-Submitted: auto-generated The branch stable/14 has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=f27b5d04f4df8556908e9af8db28460ac4536a9f commit f27b5d04f4df8556908e9af8db28460ac4536a9f Author: Baptiste Daroussin AuthorDate: 2025-06-10 09:28:49 +0000 Commit: Baptiste Daroussin CommitDate: 2025-06-23 07:43:12 +0000 nuageinit: runcmd should also be executed late Execute the runcmd specified in cloudinit at the same moment as the user_data script aka late in the boot process, to respect cloudinit specifications (cherry picked from commit 8feca60d6ee983ef3c81903675b4d9c3218c7e7a) --- libexec/nuageinit/nuageinit | 13 ++++++++++--- libexec/nuageinit/tests/nuageinit.sh | 12 +++++++----- libexec/rc/rc.d/nuageinit_user_data_script | 4 ++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/libexec/nuageinit/nuageinit b/libexec/nuageinit/nuageinit index f2f15f0d36f0..cd5912c54975 100755 --- a/libexec/nuageinit/nuageinit +++ b/libexec/nuageinit/nuageinit @@ -379,11 +379,18 @@ if line == "#cloud-config" then nuage.chpasswd(obj.chpasswd) end if obj.runcmd then + f = nil for _, c in ipairs(obj.runcmd) do - if not os.execute(c) then - nuage.warn("Failed to execute '" .. c .. "'") - -- execute the next command anyway -- + if f == nil then + nuage.mkdir_p(root .. "/var/cache/nuageinit") + f = assert(io.open(root .. "/var/cache/nuageinit/runcmds", "w")) + f:write("#!/bin/sh\n") end + f:write(c .. "\n") + end + if f ~= nil then + f:close() + sys_stat.chmod(root .. "/var/cache/nuageinit/runcmds", 493) end end if obj.packages then diff --git a/libexec/nuageinit/tests/nuageinit.sh b/libexec/nuageinit/tests/nuageinit.sh index be8b186d933b..3d0033a648de 100644 --- a/libexec/nuageinit/tests/nuageinit.sh +++ b/libexec/nuageinit/tests/nuageinit.sh @@ -728,18 +728,20 @@ runcmd: - plop EOF chmod 755 "${PWD}"/media/nuageinit/user_data - atf_check -s exit:0 -e inline:"sh: plop: not found\nnuageinit: Failed to execute 'plop'\n" /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 + atf_check -s exit:0 /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 + test -f var/cache/nuageinit/runcmds || atf_fail "File not created" + test -x var/cache/nuageinit/runcmds || atf_fail "Missing execution permission" + atf_check -o inline:"#!/bin/sh\nplop\n" cat var/cache/nuageinit/runcmds cat > media/nuageinit/user_data << 'EOF' #cloud-config runcmd: - - echo "yeah!" > "${PWD}"/media/nuageinit/runcmd_echo - - uname -s > "${PWD}"/media/nuageinit/runcmd_uname + - echo "yeah!" + - uname -s EOF chmod 755 "${PWD}"/media/nuageinit/user_data atf_check /usr/libexec/nuageinit "${PWD}"/media/nuageinit config-2 - atf_check -s exit:0 -o inline:"yeah!\n" cat "${PWD}"/media/nuageinit/runcmd_echo - atf_check -s exit:0 -o inline:"FreeBSD\n" cat "${PWD}"/media/nuageinit/runcmd_uname + atf_check -o inline:"#!/bin/sh\necho \"yeah!\"\nuname -s\n" cat var/cache/nuageinit/runcmds } config2_userdata_packages_head() diff --git a/libexec/rc/rc.d/nuageinit_user_data_script b/libexec/rc/rc.d/nuageinit_user_data_script index 94d5d008a7fc..97ccc45f8658 100755 --- a/libexec/rc/rc.d/nuageinit_user_data_script +++ b/libexec/rc/rc.d/nuageinit_user_data_script @@ -15,6 +15,10 @@ rcvar="nuageinit_enable" execute_user_data_script() { + if [ -x /var/cache/nuageinit/runcmds ]; then + echo "Executing 'runcmd'" | tee -e /var/log/nuageinit.log + /var/cache/nuageinit/runcmds 2>&1 | tee -a /var/log/nuageinit.log + fi test -x /var/cache/nuageinit/user_data || return echo "Executing user_data script" | tee -a /var/log/nuageinnit.log /var/cache/nuageinit/user_data 2>&1 | tee -a /var/log/nuageinit.log