mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
oci: user-data: Try to decode base64 content
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 <michael.tremer@ipfire.org> Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
This commit is contained in:
committed by
Peter Müller
parent
efb999548a
commit
d5538121d7
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user