Usage
To use Solidblocks Cloud-Init in you user data, include the following snippet
export SOLIDBLOCKS_DIR="${SOLIDBLOCKS_DIR:-/solidblocks}"
export SOLIDBLOCKS_DEVELOPMENT_MODE="${SOLIDBLOCKS_DEVELOPMENT_MODE:-0}"
SOLIDBLOCKS_VERSION="v0.1.21"
SOLIDBLOCKS_CLOUD_CHECKSUM="cf0d193d01c229160ba175edb25c6672d8197e1755d79f9b48f80f003b26932f"
function bootstrap_package_update {
apt-get update
}
function bootstrap_package_update_system() {
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
}
function bootstrap_package_check_and_install {
local package=${1}
echo -n "checking if package '${package}' is installed..."
if [[ $(dpkg-query -W -f='${Status}' "${package}" 2>/dev/null | grep -c "ok installed") -eq 0 ]];
then
echo "not found, installing now"
while ! DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -qq -y "${package}"; do
echo "installing failed retrying in 30 seconds"
sleep 30
apt-get update
done
else
echo "ok"
fi
}
function bootstrap_solidblocks() {
bootstrap_package_update
bootstrap_package_check_and_install "unzip"
groupadd solidblocks
useradd solidblocks -g solidblocks
# shellcheck disable=SC2086
mkdir -p ${SOLIDBLOCKS_DIR}/{templates,lib,secrets}
chmod 770 ${SOLIDBLOCKS_DIR}
chown solidblocks:solidblocks ${SOLIDBLOCKS_DIR}
chmod -R 770 ${SOLIDBLOCKS_DIR}
chown -R solidblocks:solidblocks ${SOLIDBLOCKS_DIR}
chmod -R 700 ${SOLIDBLOCKS_DIR}/secrets
local temp_file="$(mktemp)"
curl -v -L "${SOLIDBLOCKS_BASE_URL:-https://github.com}/pellepelster/solidblocks/releases/download/${SOLIDBLOCKS_VERSION}/solidblocks-cloud-init-${SOLIDBLOCKS_VERSION}.zip" > "${temp_file}"
echo "${SOLIDBLOCKS_CLOUD_CHECKSUM} ${temp_file}" | sha256sum -c
(
cd "${SOLIDBLOCKS_DIR}" || exit 1
unzip "${temp_file}"
rm -rf "${temp_file}"
)
source "${SOLIDBLOCKS_DIR}/lib/storage.sh"
source "${SOLIDBLOCKS_DIR}/lib/lego.sh"
}