From d5538121d7b61f03e53a2fe48ed81728019df411 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 21 Feb 2022 17:24:56 +0000 Subject: [PATCH] oci: user-data: Try to decode base64 content MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Terraform only supports sending any shell scripts encoded in base64 which is however not required by Oracle. Therefore we have to test if the script is encoded or not. Signed-off-by: Michael Tremer Reviewed-by: Peter Müller --- src/initscripts/helper/oci-setup | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/initscripts/helper/oci-setup b/src/initscripts/helper/oci-setup index 4dbc05ae3f..782fde5a2b 100644 --- a/src/initscripts/helper/oci-setup +++ b/src/initscripts/helper/oci-setup @@ -34,6 +34,24 @@ get() { wget -qO - "http://169.254.169.254/opc/v1/${file}" } +try_base64_decode() { + local input="${1}" + + local tmp="$(mktemp)" + + # Try to decode this and return output if successful + if base64 -d <<< "${input}" > "${tmp}" 2>/dev/null; then + echo "$(<${tmp})" + + # Otherwise just return the input + else + echo "${input}" + fi + + # Cleanup + unlink "${tmp}" +} + to_address() { local n="${1}" @@ -134,6 +152,9 @@ import_oci_configuration() { # Download a startup script local script="$(get instance/metadata/user_data)" + # Try to decode this + script="$(try_base64_decode "${script}")" + # Execute the script if [ "${script:0:2}" = "#!" ]; then echo "${script}" > /tmp/user-data.script -- 2.39.5