diff options
Diffstat (limited to 'fluent-bit/install.sh')
-rwxr-xr-x | fluent-bit/install.sh | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/fluent-bit/install.sh b/fluent-bit/install.sh new file mode 100755 index 00000000..d5bacd95 --- /dev/null +++ b/fluent-bit/install.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env bash +set -e + +# Provided primarily to simplify testing for staging, etc. +RELEASE_URL=${FLUENT_BIT_PACKAGES_URL:-https://packages.fluentbit.io} +RELEASE_KEY=${FLUENT_BIT_PACKAGES_KEY:-$RELEASE_URL/fluentbit.key} + +# Optionally specify the version to install +RELEASE_VERSION=${FLUENT_BIT_RELEASE_VERSION:-} +# Optionally prefix install commands, e.g. use 'echo ' here to prevent installation after repo set up. +INSTALL_CMD_PREFIX=${FLUENT_BIT_INSTALL_COMMAND_PREFIX:-} +# Optionally set the name of th package to install, e.g. for legacy td-agent-bit. +INSTALL_PACKAGE_NAME=${FLUENT_BIT_INSTALL_PACKAGE_NAME:-fluent-bit} +# Optional Apt/Yum additional parameters (e.g. releasever for AL2022/AL2023) +APT_PARAMETERS=${FLUENT_BIT_INSTALL_APT_PARAMETERS:-} +YUM_PARAMETERS=${FLUENT_BIT_INSTALL_YUM_PARAMETERS:-} + +echo "================================" +echo " Fluent Bit Installation Script " +echo "================================" +echo "This script requires superuser access to install packages." +echo "You will be prompted for your password by sudo." + +# Determine package type to install: https://unix.stackexchange.com/a/6348 +# OS used by all - for Debs it must be Ubuntu or Debian +# CODENAME only used for Debs +if [ -f /etc/os-release ]; then + # Debian uses Dash which does not support source + # shellcheck source=/dev/null + . /etc/os-release + OS=$( echo "${ID}" | tr '[:upper:]' '[:lower:]') + CODENAME=$( echo "${VERSION_CODENAME}" | tr '[:upper:]' '[:lower:]') +elif lsb_release &>/dev/null; then + OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]') + CODENAME=$(lsb_release -cs) +else + OS=$(uname -s) +fi + +SUDO=sudo +if [ "$(id -u)" -eq 0 ]; then + SUDO='' +else + # Clear any previous sudo permission + sudo -k +fi + +# Set up version pinning +APT_VERSION='' +YUM_VERSION='' +if [ -n "${RELEASE_VERSION}" ]; then + APT_VERSION="=$RELEASE_VERSION" + YUM_VERSION="-$RELEASE_VERSION" +fi + +# Now set up repos and install dependent on OS, version, etc. +# Will require sudo +case ${OS} in + amzn|amazonlinux) + $SUDO sh <<SCRIPT +rpm --import $RELEASE_KEY +cat << EOF > /etc/yum.repos.d/fluent-bit.repo +[fluent-bit] +name = Fluent Bit +# Legacy server style +baseurl = $RELEASE_URL/amazonlinux/$VERSION +gpgcheck=1 +repo_gpgcheck=1 +gpgkey=$RELEASE_KEY +enabled=1 +EOF +cat /etc/yum.repos.d/fluent-bit.repo +$INSTALL_CMD_PREFIX yum -y $YUM_PARAMETERS install $INSTALL_PACKAGE_NAME$YUM_VERSION +SCRIPT + ;; + centos|centoslinux|rhel|redhatenterpriselinuxserver|fedora|rocky|almalinux) + # We need variable expansion and non-expansion on the URL line to pick up the base URL. + # Therefore we combine things with sed to handle it. + $SUDO sh <<SCRIPT +rpm --import $RELEASE_KEY +cat << EOF > /etc/yum.repos.d/fluent-bit.repo +[fluent-bit] +name = Fluent Bit +# Legacy server style +baseurl = $RELEASE_URL/centos/VERSION_SUBSTR +gpgcheck=1 +repo_gpgcheck=1 +gpgkey=$RELEASE_KEY +enabled=1 +EOF +sed -i 's|VERSION_SUBSTR|\$releasever/|g' /etc/yum.repos.d/fluent-bit.repo +cat /etc/yum.repos.d/fluent-bit.repo +$INSTALL_CMD_PREFIX yum -y $YUM_PARAMETERS install $INSTALL_PACKAGE_NAME$YUM_VERSION +SCRIPT + ;; + ubuntu|debian) + # Remember apt-key add is deprecated + # https://wiki.debian.org/DebianRepository/UseThirdParty#OpenPGP_Key_distribution + $SUDO sh <<SCRIPT +export DEBIAN_FRONTEND=noninteractive +mkdir -p /usr/share/keyrings/ +curl $RELEASE_KEY | gpg --dearmor > /usr/share/keyrings/fluentbit-keyring.gpg +cat > /etc/apt/sources.list.d/fluent-bit.list <<EOF +deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] $RELEASE_URL/${OS}/${CODENAME} ${CODENAME} main +EOF +cat /etc/apt/sources.list.d/fluent-bit.list +apt-get -y update +$INSTALL_CMD_PREFIX apt-get -y $APT_PARAMETERS install $INSTALL_PACKAGE_NAME$APT_VERSION +SCRIPT + ;; + *) + echo "${OS} not supported." + exit 1 + ;; +esac + +echo "" +echo "Installation completed. Happy Logging!" +echo "" |